设置if elif else语句的变量数/深度

时间:2015-06-27 17:36:05

标签: python python-2.7 if-statement

假设我有一个不确定长度的列表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,这是我的开始吗?

2 个答案:

答案 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