【问题标题】:Appending values of two lists in python in a specific way以特定方式在python中附加两个列表的值
【发布时间】:2026-01-25 01:25:02
【问题描述】:

我有 2 个列表:

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()

我怎样才能收到我想要的输出?

【问题讨论】:

  • 这里是答案,如果您有新的要求,请创建一个新问题。

标签: python list multidimensional-array


【解决方案1】:

这是一个工作代码,它给出了所需的输出:

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']]

【讨论】:

    【解决方案2】:

    这段代码:

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

    【讨论】:

    • @malo 的反应比我的好(y)