首页 > 解决方案 > 两个列表的乘积,仅在一个列表上轮换

问题描述

我想获得这是一个输出:

['xa' , 'yb' , 'zc']
['xb' , 'yc' , 'za']
['xc' , 'ya' , 'zb']

这是我的尝试,但它不起作用:

list1 = ['a','b','c']
list2 = ['x','y','z']
size = len(list1)

for j in range(size):
    for i in range(size):
        n = list1[(i+j)%size]
        for k,l in enumerate(list2):
            list2[k] = list2[k] + n
        print(list2)

如何获得所需的输出?

标签: pythonlistenumerate

解决方案


假设您想要字符串作为输出,您只需要 2 个嵌套循环,运行ij最多size

>>> [[list2[j] + list1[(i+j)%size] for j in range(size)] for i in range(size)]
[['xa', 'yb', 'zc'], ['xb', 'yc', 'za'], ['xc', 'ya', 'zb']]

推荐阅读