python - 将列表列表中的特定元素从字符串转换为整数

标签 python python-3.x

<分区>

我有一个结构化的列表列表,其中每个元素都是一个字符串。我想将此列表列表中的某些(已知索引,始终相同)元素转换为整数。我试过使用列表理解或 isdigit() 方法(没有负元素)但无法弄清楚。

list_of_lists = [['spam','1','toast'], ['bacon','5','eggs'], ['juice', '8', 'tea']]
new_breakfast_list = [[int(element) for element in row] for row in list_of_lists]

上面的代码可以理解地在尝试转换第一个元素时给出 ValueError: invalid literal for int() with base 10: 'spam'。我想要么忽略错误并前进到下一个元素,要么专门循环遍历 list_of_lists[i][1] 这样我就可以得到:

print(new_breakfast_list)
[['spam', 1, 'toast'], ['bacon', 5, 'eggs'], ['juice', 8, 'tea']]

最佳答案

您的列表理解几乎是正确的,您只需要在内循环中使用 isdigit() 进行检查,并使用 int(element) 或仅使用 element 取决于 isdigit 的值。

new_breakfast_list = [[int(element) for element in row if element.isdigit() else element] for row in list_of_lists]

或者,如您所知,整数元素出现在索引 1 处,您可以使用:

for element in list_of_lists:
    element[1]=int(element[1])

因为您知道要更改的索引,所以应该使用此方法,因为它可以避免不必要地循环遍历每个元素。

关于python - 将列表列表中的特定元素从字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376696/

相关文章:

python - 如何验证 namedtuple 值?

Python 多重赋值与 Panda 系列

python - 如果集合是无序的,为什么集合会以相同的顺序显示?

python - 无法找到异常的来源以及它是什么异常

python - 体面的数字 |帮助降低时间复杂度

python - 如何在 Django 中的多对多关系中向数据透视表添加更多列?

python - 如何调整典型sk-learn数据挖掘方法的阈值以平衡精度和召回率?

python - pandas join DF - 合并与加入不同的语义

python - 将 python 中的列表保存为分号分隔的文本文件

python - Tkinter:为按钮和标签制作 'classes'