简体   繁体   English

如何从列表中提取连续的偶数?

[英]How to extract consecutive even numbers from a list?

In a list, a minimum of 2 even numbers makes a sequence: for example, a list that is [3, 18, 6, 5, 3, 4, 32, 8, 12] has 2 sequences that are even - which are 18, 6 and 4, 32, 8, 12 .在一个列表中,至少有 2 个偶数组成一个序列:例如,一个[3, 18, 6, 5, 3, 4, 32, 8, 12]的列表有 2 个偶数序列 - 它们是18, 64, 32, 8, 12

How do I extract the sequences without extracting every even number individually?如何在不单独提取每个偶数的情况下提取序列?

def saisie():
    test = False
    while not test:
        N = int(input("donner N: "))
        test = 3<=N<=20
    return N

def remplir(N):
    t=[int]*N
    for i in range(N):
        element = input("enter an element:")
        t.append(element)
    return t

def seq(N, t):
    s=""
    for i in t:
        if t[i] and t[i+=]%2==0:
            s=   

To group items with shared criteria, you can use groupby :要使用共享标准对项目进行分组,您可以使用groupby

from itertools import groupby

nums = [3, 18, 6, 5, 3, 4, 32, 8, 12]

for is_even, grouper in groupby(nums, key=lambda x: x % 2 == 0):
    if is_even:
        evens = list(grouper)  # grouper objects have no len. Must convert to list
        if len(evens) >= 2:  # only consider sequences of at least 2 even numbers
            print(*evens)

Will give:会给:

18 6
4 32 8 12

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM