gpt4 book ai didi

Python 创建一个包含混洗元素并按对象引用的子列表

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:11 25 4
gpt4 key购买 nike

我通过搜索没有找到我的问题的答案,所以我希望你能帮助我。

我有一个包含 pandas DataFrame 对象的列表。现在我想从此列表中创建两个子列表。假设我想创建两个列表,它们的长度都是原始列表的一半。每个元素只能出现在一个列表中,并且不能出现多次。 DataFrame 对象很大,所以我只想使用指针。我希望打乱列表顺序。

示例:我有包含元素的列表 a。要获得困惑的索引顺序,我可以执行以下操作(np 指的是 numpy):

shuffledElements = list(range(a.len()))
shuffledElements = np.random.shuffle(shuffledElements)

现在,如何创建两个元素顺序随机的子列表,而不是将元素复制到子列表,而是使用指针代替?

谢谢你的帮助

最佳答案

您需要做的就是制作一份列表的浅拷贝,将其打乱,然后创建一个包含一半元素的列表和一个包含另一半元素的列表。

>>> a = [1,2,3,4]
>>> shuffled = a[:] # shallow copy
>>> np.random.shuffle(shuffled) # shuffle in place
>>> left = shuffled[:len(shuffled)/2]
>>> right = shuffled[len(shuffled)/2:]
>>> left
[4, 3]
>>> right
[2, 1]

没有数据(除了对内存中某处整数对象的引用)被复制。

>>> left[0] is a[3]
True

您可以对包含任何类型对象的列表执行相同的操作,我只是使用整数进行演示。 (当然,如果您的原始列表包含奇数个元素,您将不得不调整代码,但这不是这里的重点。)

关于Python 创建一个包含混洗元素并按对象引用的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42952337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com