如何更改列表中的项目类型?

时间:2014-02-12 18:46:10

标签: python list python-3.x

我有一个由“string”类型的元素组成的列表。

li = ['1 ', '2', '3 ', '4', '5 ', '6', '7 '] 

我需要更改“int”上每个元素的类型。使用周期是不可取的。

6 个答案:

答案 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指出的那样,mapsome 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 comprehensionint类型一起使用:

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]