我有一个二维列表,如下所示:
table = [['donkey', '2', '1', '0'], ['goat', '5', '3', '2']]
我想把最后三个元素改成整数,但下面的代码感觉很难看:
for row in table:
for i in range(len(row)-1):
row[i+1] = int(row[i+1])
但我更喜欢这样的东西:
for row in table:
for col in row[1:]:
col = int(col)
我认为应该有一种方法来编写上面的代码,但是切片创建了一个独立于原始列表的迭代器/新列表,因此引用不会继续。
有什么办法可以得到一个更像Python的解决方案吗?
上面看起来更像Python吗?
我很喜欢谢哈的回答。
一般来说,在编写Python代码时,如果您发现自己在编写f
or i in range(len(somelist))
,那么您就错了:enumerate
zip
或itertools.izip
在您的情况下,第一列不同,因此您不能优雅地使用枚举:
尝试:
AFAIK,分配给一个
list
片会强制操作就地完成,而不是创建一个新的list
。相关问题 更多 >
编程相关推荐