两个列表的乘积,仅在一个列表上旋转

2024-05-16 11:58:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想获得这是一个输出:

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

如何获得所需的输出


Tags: inforsizezcrangexczblist2
2条回答

这是一个没有模的解

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

假设您希望字符串作为输出,则只需要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']]

相关问题 更多 >