我有一个列表/元组的列表,例如:
objects = [
(1, "a", "foo"), # or I can make [1, "a", "foo"] instead
(20, "bb", "bar"),
(1231, "cde", "foo2"),
]
现在我想修改每个元组的第一个值(例如,进行简单的to_string
转换):
objects = [
("1", "a", "foo"), # or I can make [1, "a", "foo"] instead
("20", "bb", "bar"),
("1231", "cde", "foo2"),
]
当前,我创建了一个全新的列表:
objects_str = []
for object in objects:
objects_str.append((str(object[0]), object[1], object[2]))
有没有更清洁的方法?我曾考虑过使用namedtuple
,但看起来它们也是不可变的。另一个选择可能是使用:
objects_str = []
for object in objects:
object[0] = str(object[0])
objects_str.append(object)
注意:我也可以对原始对象进行变异。
答案 0 :(得分:6)
您可以使用enumerate
遍历objects
来使用索引对其进行修改:
for i, (first, *rest) in enumerate(objects):
objects[i] = str(first), *rest
objects
变为:
[('1', 'a', 'foo'), ('20', 'bb', 'bar'), ('1231', 'cde', 'foo2')]
答案 1 :(得分:1)
只需在适当位置修改列表即可
for i, object in enumerate(objects):
objects[i] = (str(object[0]), object[1], object[2])