繁体   English   中英

Python-排序一个列表,使X跟随Y,Y跟随X.

[英]Python-Order a list so that X follows Y and Y follows X

所以我使用python链方法在django中组合两个查询集(列表)。

results=list(chain(data,tweets[:5]))

数据和推文是两个单独的列表。 我现在有一个“结果”列表,其中包含我希望以这种方式排序的数据和推文对象。

results=[data,tweets,data,tweets,data,tweets]

实现这种排序的最佳方法是什么? 我尝试使用random.shuffle,但这不是我想要的。

你可以使用itertools.chain.from_iterablezip

>>> data = [1,2,3,4] 
>>> tweets = ['a','b','c','d']
>>> list(chain.from_iterable(zip(data,tweets)))
[1, 'a', 2, 'b', 3, 'c', 4, 'd']

使用itertools.izip进行内存有效的解决方案。

这是使用迭代器的解决方案:

from itertools import izip
result = (v for t in izip(data, tweets) for v in t)

你可以这样做:

>>> result = [None]*(len(data)+len(tweets))
>>> result[::2] = data
>>> result[1::2] = tweets

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM