如何根据条件break list comprehension,例如何时找到数字412?
码:
numbers = [951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399,
162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67,
104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842,
451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527]
even = [n for n in numbers if 0 == n % 2]
所以在功能上,你可以推断它应该会做的事情:
even = [n for n in numbers if 0 == n % 2 and break if n == 412]
我更想要实现:
import
语句或类似)发布于 2018-12-18 14:26:42
even = [n for n in numbers[:None if 412 not in numbers else numbers.index(412)] if not n % 2]
刚刚上面的FJ代码并添加了一个三元组来检查412是否在列表中。即使412不在列表中,仍然是一行并且将工作。
发布于 2018-12-18 15:20:03
您可以将生成器表达式与itertools.takewhile()
:
even_numbers = (n for n in numbers if not n % 2)
list(itertools.takewhile(lambda x: x != 412, even_numbers))
https://stackoverflow.com/questions/-100006313
复制相似问题