我有一个由“string”类型的元素组成的列表。
li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 ']
我需要更改“int”上每个元素的类型。使用周期是不可取的。
答案 0 :(得分:4)
使用map function,它返回一个生成器,在这种情况下也是惰性转换(仅当你需要列表中的新元素时才转换):
li = map(int, li)
使用您的示例(和Python 3)
>>> li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 ']
>>> map(int, li)
<map object at 0xffe3ed0c>
>>> list(map(int, li))
[1, 2, 3, 4, 5, 6, 7]
>>> for elem in map(int, li):
... print(elem)
...
1
2
3
4
5
6
7
<小时/> 正如@hivert指出的那样,
map
是some kind of deprecated in the Python community。您可以使用列表推导或生成器:
[int(x) for x in li] # create the full list directly
(int(n) for n in li) # create a generator (note parentheses instead of brackets)
答案 1 :(得分:2)
将list comprehension与int
类型一起使用:
list_of_ints = [int(n) for n in li]
如果您不一定需要列表中的所有项目,generator可能更合适。这将避免在需要之前评估每个项目。
int_generator = (int(n) for n in li) # Note the () instead of []
这相当于map(int, li)
,但(IMO)更具可读性。
答案 2 :(得分:2)
您可以使用以下代码进行投射:
li = [int(x) for x in li]
它将使用旧列表中的每个元素创建新列表,但是将其转换为int。
答案 3 :(得分:0)
你只需要将字符串转换为int。 Python使用int()
函数执行此操作:
li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 ']
li_int = [int(x) for x in li]
print li_int
>>>[1, 2, 3, 4, 5, 6, 7]
运行此命令后,您有一个新列表,其中包含所有值,但为整数。
如果您想在不创建新列表的情况下更改li中的项目,请执行以下操作:
li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 ']
li = [int(x) for x in li]
答案 4 :(得分:0)
您可以使用地图功能
来完成li = map(int, li)
答案 5 :(得分:-1)
在列表理解中使用int()
:
li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 ']
ints = [int(n) for n in li]