我有两个列表:
list1 = ['a','b','c']
list2 = [[],[],[]]
我想得到这个输出:
[['a'], [], []]
[['a'], ['b'], []]
[['a'], ['b'], ['c']]
[['a', 'b'], ['b'], ['c']]
[['a', 'b'], ['b', 'c'], ['c']]
[['a', 'b'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']]
我试过这样做,但不起作用:
def func():
list1 = ['a','b','c']
list2 = [[],[],[]]
print(list1)
for i in list1:
for j in range(len(list2)):
list2[j].append(i)
print(list2)
func()
如何接收我想要的输出?
这里有一个工作代码,它提供了所需的输出:
list1 = ['a','b','c']
list2 = [[],[],[]]
size = len(list1)
for j in range(size):
for i in range(size):
list2[i].append(list1[(i+j)%size])
print(list2)
输出:
[['a'], [], []]
[['a'], ['b'], []]
[['a'], ['b'], ['c']]
[['a', 'b'], ['b'], ['c']]
[['a', 'b'], ['b', 'c'], ['c']]
[['a', 'b'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']]
对于问题的第二部分,您只需将打印声明放在需要的地方:
for j in range(size):
for i in range(size):
list2[i].append(list1[(i+j)%size])
print(list2)
输出为:
[['a'], ['b'], ['c']]
[['a', 'b'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']]
此代码:
list1 = ['a', 'b', 'c']
list2 = [[],[],[]]
for _ in list1:
for j, val2 in enumerate(list2):
val2.append(list1[j])
print(list2)
list1 = list1[1:] + [list1[0]]
给出以下输出:
['a'], [], []]
[['a'], ['b'], []]
[['a'], ['b'], ['c']]
[['a', 'b'], ['b'], ['c']]
[['a', 'b'], ['b', 'c'], ['c']]
[['a', 'b'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a']]
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']]
然后你可以做一个:
list2 = [sorted(i) for i in list2]
按照字母顺序得到最后一行。这适用于len(list1(==len(list 2(的任意两个列表。