将列表转换为 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_eval
与 list 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)
您将获得所有整数而不是字符串的列表
我有以下列表:
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_eval
与 list 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)
您将获得所有整数而不是字符串的列表