Python 将包含单个字符串的列表展平为整数列表
我有一个字符串列表,看起来像Python 将包含单个字符串的列表展平为整数列表,python,Python,我有一个字符串列表,看起来像 allyears #[['1916'], ['1919'], ['1922'], ['1912'], ['1924'], ['1920']] 我需要这样的输出: #[1916, 1919, 1922, 1912, 1924, 1920] >>> for i in range(0, len(allyears)): ... print(allyears[i][0]) 1916 1919 1922... 您已经尝试过以下方法: for i
allyears
#[['1916'], ['1919'], ['1922'], ['1912'], ['1924'], ['1920']]
我需要这样的输出:
#[1916, 1919, 1922, 1912, 1924, 1920]
>>> for i in range(0, len(allyears)):
... print(allyears[i][0])
1916
1919
1922...
您已经尝试过以下方法:
for i in range(0, len(allyears)):
allyears[i] = int(allyears[i])
但我有错误
>>> TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
尝试:
非常接近,在进行
int
转换之前,只需获取allyears[i]
的第一个(也是唯一一个)元素:
for i in range(0, len(allyears)):
allyears[i] = int(allyears[i][0])
或者,您可以使用列表在一行中完成此操作:
allyears = [int(l[0]) for l in allyears]
allyears = [int(e) for l in allyears for e in l]
如果您想要一个简单的
for
循环,您还可以使用枚举
内置函数并解压缩内部列表:
for i, [n] in enumerate(allyears):
allyears[i] = int(n)
您可以使用列表:
allyears = [int(l[0]) for l in allyears]
allyears = [int(e) for l in allyears for e in l]
此外,您还可以使用itertools.chain
from itertools import chain
list(map(int, chain.from_iterable(allyears)))
输出:
[1916, 1919, 1922, 1912, 1924, 1920]
如果在您的内部列表中有多个元素,您需要访问列表中的各个元素,而不是列表本身,那么最后两种解决方案也可以使用 尝试:
您可以简单地执行以下操作:
allyears = [int(i[0]) for i in allyears]
因为您的allyears
中的所有元素都是一个只有一个元素的列表,所以我通过I[0]
错误是因为ypu无法将列表
转换为int
您尝试了以下操作:
for i in range(0, len(allyears)):
allyears[i] = int(allyears[i])
并且得到了错误
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
下一件你应该尝试的事情是:
for i in range(0, len(allyears)):
print(allyears[i])
你会看到你在循环这些值:
['1916']
['1919']
['1922']
等等
不能使用int()
将它们转换为int,因为它们是列表。您应该使用[0]
索引获得这些列表中的唯一元素,如下所示:
#[1916, 1919, 1922, 1912, 1924, 1920]
>>> for i in range(0, len(allyears)):
... print(allyears[i][0])
1916
1919
1922...
现在您知道如何更正原始代码:
for i in range(0, len(allyears)):
allyears[i] = int(allyears[i][0])
您的问题的更多解决方案将使用:
您正在查找以下内容:
int(allyears[i][0])
,或者简单地说:[int(item[0])用于allyears中的项目]
如果嵌套列表中只有一个项目,那么您也可以不用索引来完成此操作:[int(*item)用于allyears中的项目]