-3
假設我有一個包含5個元素x=[a,b,c,d,e]
的列表,我想運行一個for循環,打印所有列表,其中兩個條目比原始列表中的對應條目少1。for循環中的Python更改列表元素
什麼是在Python中做到這一點的簡單方法?提前致謝。
編輯:如果x=[4,5,6,7,8]
我想:
[3,4,6,7,8], [3,5,5,7,8], [3,5,6,6,8] etc.
假設我有一個包含5個元素x=[a,b,c,d,e]
的列表,我想運行一個for循環,打印所有列表,其中兩個條目比原始列表中的對應條目少1。for循環中的Python更改列表元素
什麼是在Python中做到這一點的簡單方法?提前致謝。
編輯:如果x=[4,5,6,7,8]
我想:
[3,4,6,7,8], [3,5,5,7,8], [3,5,6,6,8] etc.
事情是這樣的:
>>> from itertools import combinations
>>> lis = [0,1,2,3,4]
>>> for x,y in combinations(range(len(lis)),2):
l = lis[:]
l[x] -= 1
l[y] -= 1
print l
...
[-1, 0, 2, 3, 4]
[-1, 1, 1, 3, 4]
[-1, 1, 2, 2, 4]
[-1, 1, 2, 3, 3]
[0, 0, 1, 3, 4]
[0, 0, 2, 2, 4]
[0, 0, 2, 3, 3]
[0, 1, 1, 2, 4]
[0, 1, 1, 3, 3]
[0, 1, 2, 2, 3]
較短的版本:
for x,y in combinations(range(len(lis)),2):
print [item - 1 if i in (x,y) else item for i,item in enumerate(lis)]
...
[-1, 0, 2, 3, 4]
[-1, 1, 1, 3, 4]
[-1, 1, 2, 2, 4]
[-1, 1, 2, 3, 3]
[0, 0, 1, 3, 4]
[0, 0, 2, 2, 4]
[0, 0, 2, 3, 3]
[0, 1, 1, 2, 4]
[0, 1, 1, 3, 3]
[0, 1, 2, 2, 3]
from itertools import combinations
a = [1,2,3,4]
for combination in combinations(range(len(a)),r=2):
print [c-(1 if i in combination else 0) for i,c in enumerate(a)]
所以,你會想'[A-1 ,b-1,c,d,e]','[a-1,b,c-1,d,e]','[a-1,b,c,d-1,e]'等? –
問題沒有任何意義,原始列表是什麼?列表是否包含ascii字符或數字或什麼?請張貼輸入和期望的輸出。 –
a,b,c ..是列表嗎? –