Python:包含元组和长整型的列表

2 投票
3 回答
1986 浏览
提问于 2025-04-15 20:20

我有一个列表,里面包含了一些元组和长整型数字,这个列表长这样:

   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']

撰写回答