两个列表的产品,仅在一个列表上轮换
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 个嵌套循环,运行 在 i
和 j
到 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']]
这里有一个不取模的解法
>>> [[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']]
我想得到的是一个输出:
['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 个嵌套循环,运行 在 i
和 j
到 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']]
这里有一个不取模的解法
>>> [[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']]