Python:包含元组和长整型的列表
我有一个列表,里面包含了一些元组和长整型数字,这个列表长这样:
table = [(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)]
我该怎么把这个表格转换成一个正式的列表呢?
所以输出应该是这样的:
table = ['1','1','1','2','2','2','3','3']
为了说明,这些数据是从一个mysql数据库中获取的。
3 个回答
1
你不需要担心整数(ints)和长整数(longs)之间的区别。如果你尝试打印一个长整数,那个“L”会消失。
nums = [1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L]
>>> for num in nums:
... print num,
1 1 1 2 2 2 3 3
另外,为什么你希望结果列表里有字符串呢?你应该一直把它们当作数字,直到你想打印的时候。那时你可以用字符串格式化把它们转换成字符串(这样更灵活,特别是当你开始处理浮点数或小数的时候)。
>>> print "Your number is: %d" % 1L
Your number is 1
>>> print "If we're talking money, you might want $%.2f" % 2L
If we're talking money, you might want $2.00
一切都会按你预期的方式工作。那个“L”只会出现在长整数的repr
中,这样你就知道你在处理的是长整数而不是普通整数。
要从元组中取出它们,你可以这样做:
>>> nums = [(1L,), (1L,), (2L,), (3L,)]
>>> nums = [x[0] for x in nums]
这样会把你的列表复制到一个新列表中,或者你可以这样做:
>>> for i, num in enumerate(nums):
... nums[i] = num
>>> for i in xrange(nums):
... nums[i] = int(nums[i])
这样会修改你原来的列表,而不是创建一个新的。在这两种情况下,nums都会保存一个长整数的列表。
2
使用 itertools 库
import itertools
>>> x=[(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)]
>>>
>>> list(itertools.chain(*x))
[1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L]
>>>
>>> map(str,itertools.chain(*x))
['1', '1', '1', '2', '2', '2', '3', '3']
8
当然可以!请看下面的内容:
这个问题主要是关于如何在代码中处理一些特定的情况。比如,当你在编写程序时,可能会遇到一些错误或者意外的结果。为了让程序能够正常运行,我们需要找到解决这些问题的方法。
在这个过程中,很多人会使用一些工具或者方法来帮助他们调试代码。调试就是找出程序中哪里出错了,并修正它。这样做可以让程序更加稳定,也能提高工作效率。
总之,处理代码中的问题就像是解决一个个小谜题,找到答案后,程序就能顺利运行了。
如果你有任何具体的代码片段或者问题,可以随时分享出来,我们可以一起看看!
>>> table = [(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)]
>>> [int(e[0]) for e in table]
[1, 1, 1, 2, 2, 2, 3, 3]
>>> [str(e[0]) for e in table]
['1', '1', '1', '2', '2', '2', '3', '3']