python - 如何平均划分多个列表?[Python]
问题描述
list1 = [1,2,3,4,5]
list2 = [2,3,4,1,2]
list3 = [2,4,6,2,1]
def random_chunk(li, min_chunk=1, max_chunk= 3):
it = iter(li)
while True:
nxt = list(islice(it,randint(min_chunk,max_chunk)))
if nxt:
yield nxt
else:
break
def shuffle(a, b, c):
assert len(a) == len(b) == len(c)
start_state = random.getstate()
random.shuffle(a)
random.setstate(start_state)
random.shuffle(b)
random.setstate(start_state)
random.shuffle(c)
random.setstate(start_state)
shuffle(list1, list2, list3)
slice = list(random_chunk(list1))
随机混合列表后,我最终使用块函数随机编码。但要让这两个列表平分秋色并不容易。如何以相同的方式剪切多个列表?例如,当list1 = [1,2,3,4,5]被切割成[1,2],[3,4,5]时,list2也是[2,3],[4,2,1] .如果你让我知道,我真的很感激。
解决方案
zip功能允许您组合、装饰列表。然后,只需选择你的块并将它们分开(不装饰):
import random
list1 = [1,2,3,4,5]
list2 = [2,3,4,1,2]
list3 = [2,4,6,2,1]
lists = [list1, list2, list3]
pack = list(zip(*lists))
print(pack)
random.seed(0)
random.shuffle(pack)
print(pack[2:4])
chunk1, chunk2, chunk3 = zip(*pack[2:4])
print(chunk1, chunk2, chunk3)
推荐阅读
- python - 使用并发的线程池执行器:对不同数量的工人没有改善
- flutter - “...”或“..”在颤动中是什么意思?
- c# - MVC Razor 对象引用未设置为对象的实例
- javascript - 有没有办法找出为什么 Visual Studio 2019 不会缩小 js 文件?
- html - 无法通过css中的png查看背景
- javascript - D3.js v6 路径未在折线图中对齐
- node.js - 为快速会话创建一个临时模式?
- c++ - 如何使用 QT Creator 和 OpenCV 设计 UI
- python - 为什么我不断收到找不到页面的错误
- python - QT:当有两个小部件时,只有一个小部件响应按键事件