两个列表的产品,仅在一个列表上轮换

Product of two lists with rotation on only one list

我想得到的是一个输出:

['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)

如何获得所需的输出?

假设你想要字符串作为输出,你只需要 2 个嵌套循环,运行 在 ijsize:

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

这里有一个不取模的解法

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