我有一个包含字符串列表的列表看起来像
allyears
#[['1916'], ['1919'], ['1922'], ['1912'], ['1924'], ['1920']]
Run Code Online (Sandbox Code Playgroud)
我需要有这样的输出:
#[1916, 1919, 1922, 1912, 1924, 1920]
Run Code Online (Sandbox Code Playgroud)
一直在尝试这个:
for i in range(0, len(allyears)): 
    allyears[i] = int(allyears[i]) 
Run Code Online (Sandbox Code Playgroud)
但我有错误
>>> TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
Run Code Online (Sandbox Code Playgroud)
    你可以简单地这样做:
allyears = [int(i[0]) for i in allyears]
Run Code Online (Sandbox Code Playgroud)
因为你的所有元素allyears都是一个只有一个元素的列表,所以我得到了i[0]
错误是因为 ypu 无法将 a 转换list为int
您非常接近,您只需要allyears[i]在进行int转换之前获取第一个(也是唯一一个)元素:
for i in range(0, len(allyears)): 
    allyears[i] = int(allyears[i][0]) 
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用列表理解在一行中完成此操作:
allyears = [int(l[0]) for l in allyears]
Run Code Online (Sandbox Code Playgroud)
        如果你想要一个简单的for循环,你也可以使用enumerate内置函数并解压你的内部列表:
for i, [n] in  enumerate(allyears): 
    allyears[i] = int(n) 
Run Code Online (Sandbox Code Playgroud)
您可以使用列表理解:
allyears = [int(e) for l in allyears for e in l]
Run Code Online (Sandbox Code Playgroud)
另外,你可以使用itertools.chain
from itertools import chain
list(map(int, chain.from_iterable(allyears)))
Run Code Online (Sandbox Code Playgroud)
输出:
[1916, 1919, 1922, 1912, 1924, 1920]
Run Code Online (Sandbox Code Playgroud)
如果您的内部列表中有多个元素,最后 2 个解决方案也将起作用
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           378 次  |  
        
|   最近记录:  |