从不同ord的列表中形成一个列表

2024-03-29 09:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数据的列表lis1

lis1 = ['a','b','c','d','e',.....]

我想从lis1中形成一个list - lis2,其顺序如下:

[
(b,a),
(c,b),(c,a),
(d,c),(d,b),(d,a),
(e,d),(e,c),(e,b),(e,a),
.....
]

我试过这个:

for i1,i in enumerate(reversed(lis1)):
    for j1,j in enumerate(reversed(lis1)):
        if i == j or j1 > i1 :
            pass
        else:
            lis1.append("(%s,%s)"%(j,i))

但我没有得到正确的顺序输出: 我明白了:

['(f,e)', '(f,d)', '(e,d)', '(f,c)', '(e,c)', '(d,c)', '(f,b)', '(e,b)', '(d,b)', '(c,b)', '(f,a)', '(e,a)', '(d,a)', '(
c,a)', '(b,a)']

Tags: or数据in列表forif顺序pass
2条回答

这应该起作用:

lis1 = ['a','b','c','d','e']
lis2 = []
for i in range(len(lis1)):
    for j in reversed(range(0,i)):
        lis2.append("(%s,%s)"%(lis1[i],lis1[j]))

print lis2

['(b,a)',
 '(c,b)',
 '(c,a)',
 '(d,c)',
 '(d,b)',
 '(d,a)',
 '(e,d)',
 '(e,c)',
 '(e,b)',
 '(e,a)']
for i in range(1, len(lis1)):
    for j in range(i-1, -1, -1):
        lis2.append((lis1[i], lis1[j]))

相关问题 更多 >