当我得到一个超过特定条件限制的项目时,我如何理解停止列表

2024-04-24 23:46:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个如何处理它的小澄清。我有一个列表'm',我正在迭代寻找一个高于某个极限的整数,比如'90'。 一旦达到此限制,我想停止迭代,并发布该项(即满足条件)。 例如,如果98.877是项目,我必须将其附加到新列表中(请参见下面的代码段)

问题

我的挑战是,我只能扩展满足条件的项之前的项。谢谢你的帮助

m = [('a', 0.6720430254936218), ('a', 0.9672043025493621), ('a', 0.6720430254936218), ('a', 0.6720430254936218), ('a', 0.8720430254936218), ('a', 0.6720430254936218), ('a', 0.6720430254936218), ('c', 0.6720430254936218), ('c', 0.6720430254936218), ('c', 0.6720430254936218), ('c', 0.6720430254936218), ('o', 0.6720430254936218), ('o', 0.6720430254936218), ('o', 0.6720430254936218), ('o', 0.7720430254936218), ('o', 0.6720430254936218), ('r', 0.6720430254936218), ('r', 0.6720430254936218), ('r', 0.9720430254936218), ('r', 0.6720430254936218), ('d', 0.6720430254936218), ('i', 0.6720430254936218), ('i', 0.6720430254936218), ('i', 0.6720430254936218), ('n', 0.6720430254936218), ('n', 0.6720430254936218), ('n', 0.6720430254936218),]

simis = []
def end_of_loop():
    raise StopIteration

simis.extend(list(end_of_loop() if item[1]*100 >= 90 else item[1]*100 for item in m))

print(simis)

Tags: of项目loop列表ifdef代码段整数
1条回答
网友
1楼 · 发布于 2024-04-24 23:46:09

从技术上讲,这是一个生成器表达式,而不是列表理解。 不管怎样,似乎您只想查找并附加满足条件的第一项,因此您只需使用next

simis.append(next(item for item in m if item[1]*100 >= 90)[1]*100)

相关问题 更多 >