我有一定长度的list1和一定长度的list2。比方说:
list1 = [32, 345, 76, 54]
list2 = [43, 65, 76, 23, 12, 23, 44]我需要让list1循环返回,直到它与list2的长度相同。或者,如果list1更长,我需要它缩短到list2的长度。对于上面的示例,我希望实现:
list1 = [32, 345, 76, 54, 32, 345, 76]它不一定要保持list1。它可以是一个新的列表,我只需要从list1中循环回相同的值一定次数即可。我该怎么做呢?我是python的新手,我还没有找到任何可以工作的东西。
发布于 2019-03-25 07:25:05
了解精彩的itertools模块!
from itertools import cycle, islice
result = list(islice(cycle(list1), len(list2)))如果你只需要“一起”迭代这两个列表,这就更简单了:
for x, y in zip(cycle(list1), list2):
print(x, y)发布于 2019-03-25 07:24:36
使用itertools.cycle
from itertools import cycle
new_list1 = [element for element, index in zip(cycle(list1), range(len(list2)))]
new_list1输出:
[32, 345, 76, 54, 32, 345, 76]发布于 2019-03-25 07:27:26
您可以使用纯Python完成此操作:
list1 = [32, 345, 76, 54]
list2 = [43, 65, 76, 23, 12, 23, 44]
l1, l2 = (len(list1) ,len(list2))
diff = (l2- l1) % l2
times = (l2 - l1) // l2
list1 = list1 * (times+1) + list1[:diff]
print(list1)结果:
[32, 345, 76, 54, 32, 345, 76]另一种方法是:
list1 = [32, 345, 76, 54]
list2 = [43, 65, 76, 23, 12, 23, 44]
times = len(list1) + (len(list2) - len(list1))
list1 = [list1[i%len(list1)] for i in range(times)]
print(list1)https://stackoverflow.com/questions/55329528
复制相似问题