我有一个列表:mylist = [0, 0, 0, 0, 0]
我只想用一个公共(public)数字 A = 100
替换选定的元素,比如第一个、第二个和第四个。
一种方法:
mylist[:2] = [A]*2
mylist[3] = A
mylist
[100, 100, 0, 100, 0]
我正在寻找一种单线或更简单的方法来做到这一点。更一般和灵活的答案是可取的。
最佳答案
特别是因为您要替换 list
的相当大的 block ,所以我会一成不变地这样做:
mylist = [100 if i in (0, 1, 3) else e for i, e in enumerate(mylist)]
在 Python 中,创建一个新的 list
是一个单行代码,而改变一个 list
需要一个显式循环。通常,如果您不知道想要哪一个,您会想要新的 list
。 (在某些情况下它会更慢或更复杂,或者您有一些其他代码引用了相同的 list
并且需要看到它发生变化,或者其他什么,这就是为什么这是“通常”而不是“总是”。)
如果您想多次执行此操作,我会将其包装在一个函数中,正如 Volatility 所建议的那样:
def elements_replaced(lst, new_element, indices):
return [new_element if i in indices else e for i, e in enumerate(lst)]
我个人可能会把它变成一个生成器,这样它就会产生一个迭代而不是返回一个列表,即使我永远不需要它,只是因为我那样笨。但如果您确实确实需要它:
myiter = (100 if i in (0, 1, 3) else e for i, e in enumerate(mylist))
或者:
def elements_replaced(lst, new_element, indices):
for i, e in enumerate(lst):
if i in indices:
yield new_element
else:
yield e
关于python - 替换 Python 列表中的选定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350400/