Python 反向 mod

Python reverse mod

我正在使用 Python3。我想从 mylist 中获取 4 个项目来填充 list2 并每 4 个循环打印我的 list2。即使最后只有 1、2 或 3 个项目,我也需要打印其余部分。

我想用 mod % :

mylist = [1, 2, 3, 4, 5]
list2 = []
for count, el in enumerate(mylist):
    list2.append(el)
    if count % 4 == 0:
        print(list2)
        list2 = []

输出:

[1]
[2, 3, 4, 5]

但我需要倒数。

我试图从 1 enumerate(mylist, 1): 开始,但输出是 [1, 2, 3, 4] 最后一个被忽略。

我需要的输出是:

[1, 2, 3, 4]
[5]

mylist的长度是完全随机的。我怎样才能得到我想要的输出?

count0 开始,0%4==0.

所以就像你一样使用枚举然后在最后

if len(list2) != 0
    print(list2)

你有两个问题。正如您所注意到的,一个是从 0 开始。第二个是你只在列表正好有 4 个元素时打印,所以如果最后还有一些东西,那么在打印这些剩余值的循环之后就不再有打印调用了。在末尾加上:

mylist = [1, 2, 3, 4, 5]
list2 = []
for count, el in enumerate(mylist, 1):
    list2.append(el)
    if count % 4 == 0:
        print(list2)
        list2 = []

if list2: print(list2)

@remcogerlich 为您所要求的 写了一个很好的答案。虽然,我建议不要使用 % 4 来实现你要实现的目标(直到它是学校的某种家庭作业)并改用列表切片:

n = 4
for i in range(0, len(mylist), n):
    print(mylist[i:i + n])

Python 可以处理索引 "overflow" 因此您可以编写更多高级代码而不是关心尾部大小。看看类似的old question

在我看来,您只想将数据分成 4 组。这里做得最好:

How do you split a list into evenly sized chunks?

def chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in range(0, len(l), n):
        yield l[i:i + n]

for i in chunks(mylist,4):
    print(i)