首页 > 解决方案 > 将列表分配给另一个列表并将索引转换为不同的类型

问题描述

所以让我们说例如我有一个列表

list1 = ["George", "47", "62", "71", "Apples"] 

有没有办法我可以list2 = list1[1:4]同时或至少在之后将所有这些值转换为整数。

编辑:我刚刚实现的是在分配它之后(所以在这种情况下是在之后list2 = list1[1:4])我做了一个 for 循环,格式如下

for i in range(len(list2) :
   list2[i] = int(list2[i])

我觉得这不是最优雅的方法,所以我仍然会感谢任何输入,因为我有多个列表我需要这样做,所以多次这样做感觉......至少可以说草率。

标签: pythonpython-3.xlisttypes

解决方案


答案取决于您想要做到的万无一失。最简单的方法是user1104372 建议的映射。您也可以使用列表推导

list1 = ["George", "47", "62", "71", "Apples"] 
list2 = [int(i) for i in list1[1:4]]
>>>[47, 62, 71]

如果你有一个混合列表,这将不起作用,所以我们必须检查字符串是否是整数表示:

list1 = ["George", "47", "62.3", "Bahamas", "71", "Apples"] 
list2 = [int(i) for i in list1[1:5] if i.isnumeric()]
>>>[47, 71]

不幸的是,这不包括负数。我们可以将正则表达式用于更复杂的解析任务,例如:

import re
list1 = ["George", "+47", "62.3", "Bahamas", "-71", "Apples"] 
list2 = [int(i) for i in list1[1:5] if re.match("[-+]?\d+$", i)]
>>>[47, -71]

后者可以扩展到更复杂的情况,例如“39.000”,它是整数的表示 - 但这超出了您问题的范围。


推荐阅读