仅当列表的元素为数字7时,列表才会停止

时间:2019-06-11 07:54:31

标签: python list element sublist

我想编写一个包含子列表的代码,该子列表仅在列表的元素为某个数字(例如9)后才停止。

我已经尝试过使用其他运算符if语句。

def sublist (list): 
return [x for x in list if x  <9]

[7,8,3,2,4,9,51] 上面列表的输出应为: [7,8,3,2,4]

3 个答案:

答案 0 :(得分:2)

列表推导确实用于进行映射/过滤组合。如果长度取决于迭代中的某些先前状态,则最好使用for循环,它会更具可读性。但是,这是objext-object的用例。这是完成此任务的一种实用方法,只是出于娱乐目的,有些甚至可能认为它可读性:

itertools.takewhile

答案 1 :(得分:1)

首先,使用list之类的python关键字作为变量不是一个好主意。

列表理解[x for x in list if x < 9]过滤出小于9的元素,但是遇到9时它不会停止,而是会遍历整个列表

示例:

li = [7,8,3,2,4,9,51,8,7]
print([x for x in li if x < 9])

输出为

[7, 8, 3, 2, 4, 8, 7]

要实现所需的功能,您需要一个for循环,该循环在遇到给定元素(在您的情况下为9)时会中断

li = [7,8,3,2,4,9,51]

res = []
item = 9

#Iterate over the list
for x in li:
    #If item is encountered, break the loop
    if x == item:
        break
    #Append item to list
    res.append(x)

print(res)

输出为

[7, 8, 3, 2, 4]

答案 2 :(得分:1)

您可以将iter()内置使用前哨值(official doc

l = [7,8,3,2,4,9,51]
sublist = [*iter(lambda i=iter(l): next(i), 9)]
print(sublist)

打印:

[7, 8, 3, 2, 4]