python - 将列表分配给另一个列表并将索引转换为不同的类型
问题描述
所以让我们说例如我有一个列表
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])
我觉得这不是最优雅的方法,所以我仍然会感谢任何输入,因为我有多个列表我需要这样做,所以多次这样做感觉......至少可以说草率。
解决方案
答案取决于您想要做到的万无一失。最简单的方法是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”,它是整数的表示 - 但这超出了您问题的范围。
推荐阅读
- c# - 重新绘制图像前景并保持阴影的算法
- oracle-apex - 将 Oracle Forms 应用程序迁移到 Oracle Apex - POC
- javascript - 为什么linkedin社交登录不起作用显示“请在应用程序上输入以下验证器”
- javascript - 在 NodeJS 中使用 Pug 和 HTML
- ios - 如何在单元测试期间以编程方式编辑 iPhone 可访问性设置?
- python - 在 Visual Studio Code 中本地禁用 Python 语言服务器的警告
- javascript - 在 cypress.io 中,如果没有元素,我如何计算元素数量而不通过测试?
- angular - 带有 CORS 请求的 NgFor 异常
- apache-camel - 属性值不可访问
- typescript - Vue + Typescript + webpack:将 html 导入组件