将列表转换为 int

Convert a list to int

我有以下列表:

lst=['(9971, 18847)',
 '(9971, 19188)',
 '(9972, 18282)',
 '(9977, 19201)',
 '(9989, 18635)',
 '(9993, 18225)',
 '(9996, 19099)',
 '(9997, 18178)',
 '(10000, 18266)']

我想将列表中的每个元素从 str 转换为 int。我该怎么做?

到目前为止我尝试了什么?

op=[]
for i in lst:
    new_lst=int(lst[i])
    op.append(new_lst)

我收到以下错误 ValueError: invalid literal for int() with base 10:。我该如何解决?

ast.literal_evallist comprehenion

结合使用
import ast
[ast.literal_eval(l) for l in lst]

>>[(9971, 18847),
 (9971, 19188),
 (9972, 18282),
 (9977, 19201),
 (9989, 18635),
 (9993, 18225),
 (9996, 19099),
 (9997, 18178),
 (10000, 18266)]

不使用 ast:

[tuple(map(int, t.strip('()').split(', '))) for t in lst]

[(9971, 18847),
 (9971, 19188),
 (9972, 18282),
 (9977, 19201),
 (9989, 18635),
 (9993, 18225),
 (9996, 19099),
 (9997, 18178),
 (10000, 18266)]

使用元组 - 拆包。试试这个 -

mylist = []

for a in lst:
    x = a.split('(')
    for b in x:
        y = b.split(')')
    for c in y:
        z = c.split(',')
        if len(z) == 1:
            break
        else:

            for ele in z:
                mylist.append(int(ele))

print(mylist)

您将获得所有整数而不是字符串的列表