我正在尝试按字母顺序列举两个列表。
合一 现在,我正在使用zip进行以下操作:
lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']
for elt, (contenta, contentb) in enumerate(zip(lista, listb)):
print('[{}] {}'.center(79).format(str(elt), contenta.name))
print('[{}] {}'.center(79).format(str(elt), contentb))
现在的问题是lista有一个“ .name”变量,这就是我要打印的内容,但是listb没有,我想直接打印listb(当然lista和listb仅用作示例) )
所以我想得到的是:
[0] A
[1] B
[1] C
[2] D
[3] E
[4] F
[5] G
[6] R
但是我得到的是:
[0] A
[0] C
[1] B
[1] D
[2] E
[2] F
[3] R
[3] G
我不确定该如何解决?无论如何,要在保持数量一致的同时对两个列表进行排序和枚举?并同时按字母顺序排序?
答案 0 :(得分:3)
将lista + listb
和enumerate
排序:
lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']
for i, x in enumerate(sorted(lista + listb)):
print(i, x)
# 0 A
# 1 B
# 2 C
# 3 D
# 4 E
# 5 F
# 6 G
# 7 R
答案 1 :(得分:1)
因为您使用lista
,所以它在listb
和zip
的元素之间同时处理。
因此,我建议先将一个列表制成一个列表,然后按字母顺序排序。
lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']
listc = lista + listb
listc.sort()
for elt, content in enumerate(listc):
print('[{}] {}'.center(79).format(str(elt), content))
结果:
[0] A
[1] B
[2] C
[3] D
[4] E
[5] F
[6] G
[7] R