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中的项目]