【发布时间】:2015-09-09 07:03:06
【问题描述】:
假设我有一个元组的顺序列表:
s = [(0,-1), (1,0), (2,-1), (3,0), (4,0), (5,-1), (6,0), (7,-1)]
给定一个参数X,我想选择第一个元素等于或大于X 的所有元组,但不包括第一个元组的第二个元素为-1。
比如X = 3,我想选择列表[(3,0), (4,0)]
我的一个想法是: 用
获取截止键E = min (x [0] for x in s if (x [0] >= X) and (x [1] == -1) )
然后用X和E之间的键选择元素:
R = [x for x in s if X <= x [0] < E]
这给了我在 R 中想要的东西,但它似乎真的效率低下,涉及两个表扫描。我可以在 for 循环中执行此操作,丢弃键太小的元组,并在遇到第一个阻塞元组时 break。但是与列表选择相比,像狗一样奔跑。
有没有一种超级高效的python-esque (2.7) 方式来做到这一点?
【问题讨论】:
标签: python list python-2.7