在python程序中,我有一个列表要修改:
a = [1,2,3,4,5,1,2,3,1,4,5]
在列表中每次看到1时都说,我想将其替换为10、9、8。我的目标是:
a = [10,9,8,2,3,4,5,10,9,8,2,3,10,9,8,4,5]
对此进行编程的好方法是什么?目前,每当列表中出现1时,我就必须执行一次“替换”和两次“插入”操作。
谢谢!
答案 0 :(得分:0)
如果您想做所有事情,则可以尝试执行以下操作:
while i < len(a):
if a[i] == 1:
a[i : i + 1] = [10, 9, 8]
i += 1
但是恕我直言,最好是从头开始建立一个新列表,而不是修改现有列表。
答案 1 :(得分:0)
这可能不是很有效,但单行代码却很有趣:
[item for sublist in [[x] if x != 1 else [10, 9, 8] for x in a] for item in sublist]
答案 2 :(得分:0)
创建一个新列表,替换值:
b = []
for z in a:
b.extend([10, 9, 8] if z == 1 else [z])
答案 3 :(得分:0)
正常的列表理解就能胜任
>>> [y for x in a for y in ([10,9,8] if x==1 else [x])]
[10, 9, 8, 2, 3, 4, 5, 10, 9, 8, 2, 3, 10, 9, 8, 4, 5]