以特定方式追加python中两个列表的值



我有两个列表:

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(的任意两个列表。

最新更新