简体   繁体   English

将嵌套列表中的所有元素转换为整数

[英]Convert all element in the nested list to integers

I have a list with integers as strings so how can I convert it back 我有一个以整数作为字符串的列表,所以如何将其转换回

lst = ["['1','2']", "['2','4']", "['1','4']", "['1','5']", "['3','5']", "['3','4']"]

I tried to use a list comprehension 我试图使用列表理解

[j for j in i if j.isdigit() for i in lst ]

but it returns 但它返回

['3', '3', '3', '3', '3', '3', '4', '4', '4', '4', '4', '4']

Desired output: 所需的输出:

[[1,2],[2,4],[1,4],[1,5],[3,5],[3,4]]

Any help? 有什么帮助吗?

Use ast module. 使用ast模块。

Ex: 例如:

import ast

lst = ["['1','2']", "['2','4']", "['1','4']", "['1','5']", "['3','5']", "['3','4']"]
res = [list(map(int, ast.literal_eval(i))) for i in lst]
print(res)

Output: 输出:

[[1, 2], [2, 4], [1, 4], [1, 5], [3, 5], [3, 4]]

Naive solution: 天真的解决方案:

>>> lst = ["['1','2']", "['2','4']", "['1','4']", "['1','5']", "['3','5']", "['3','4']"]
>>> [[int(x.strip("'")) for x in s[1:-1].split(',')] for s in lst]
[[1, 2], [2, 4], [1, 4], [1, 5], [3, 5], [3, 4]]

You can use ast module's literal_eval function and list comprehension 您可以使用ast模块的literal_eval函数和列表理解

>>>[[int(j) for j in ast.literal_eval(i)] for i in lst]

[[1, 2], [2, 4], [1, 4], [1, 5], [3, 5], [3, 4]]
final_lst = []


for s in lst:
  sublist = []
  for item in eval(s):
     sublist.append(int(item))
  final_lst.append(sublist)

print(final_lst) 

you simply eval every list in the main list then parse every int inside sub lista 您只需eval主列表中的每个列表,然后解析子lista中的每个int

lst = ["['1','2']", "['2','4']", "['1','4']", "['1','5']", "['3','5']", "['3','4']"]
x = [[int(j) for j in eval(i)] for i in lst]
print (x)

output 输出

[[1, 2], [2, 4], [1, 4], [1, 5], [3, 5], [3, 4]]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM