假设我有一个不确定长度的列表l = [1,2,3,...n]
,我想根据列表内容和列表的长度执行一些if-elif语句。因此,如果长度为3,我们就会:
更新
p = 2.1
if p < l[0]:
#quit
elif p >= l[len(n)]:
#do something and quit
elif p >= l[2] and p<= l[3]:
#remove l[2], l[1] and l[0] from list
elif p >= l[1] and p<= l[2]:
#remove l[1] and l[0]
elif p >= l[0] and p <= l[1]:
#remove l[0] from list
正如我所提到的,列表在每种情况下都是可变长度的,例如,它可以是32,实际上没有上限。那么如何创建一个案例(一个类,一个函数,或者标准方法中的任何一个),这个逻辑可以应用于任何列表或长度n?
一些指针会很好,我还没有进展到OOP,这是我的开始吗?
答案 0 :(得分:1)
从列表开头删除低于p
的所有项目。
import itertools
p = 2.1
l = [0, 1, 2, 3, 4, 5]
print list(itertools.dropwhile(lambda x: x < p, l))
它给出了:
[3, 4, 5]
答案 1 :(得分:0)
因为你似乎是python的新手,我建议使用简单的语法:
l = [1,2,3,4] #must be ordered - if not sorted(l)
p = 2.1
if p < l[0]:
#quit
l = [elem for elem in l if p < elem]
print l
#prints [3, 4]
如果for循环现在对你来说似乎太先进了,你可以这样做:
l = [1,2,3,4] #must be ordered - if not sorted(l)
p = 2.1
if p < l[0]:
#quit
pass
for i in reversed(xrange(len(l))):
if p > l[i]:
break
l = l[i+1:]
print l
第一种方法被认为更多pythonic。