列出每三项重复元素的理解

2024-09-27 19:22:12 发布

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

在这个网站上有太多关于列表理解的问题,但似乎没有一个和我想做的相匹配。我已经用for循环完成了,但是我想知道是否可以用列表理解来完成,或者是否有人可以告诉我在哪里可以找到类似的案例。你知道吗

我有一个函数列表:

function_list=[iron,cobalt,nickel,copper,zinc,vanadium,chromium,managenese,titanium,footer]

每个函数都是我向学生提出的问题,导出为PDF文件。列表中的最后一个函数是footer,它使PDF文件插入的页面跳到下一页。你知道吗

那么通常来说,一个简单的测验是什么样的(到目前为止)?你知道吗

call_functions([x for x in function_list[0:3]] + [function_list[-1]])

生成

call_functions([iron,cobalt,nickel,footer]) #as desired

其中,调用函数基本上是一个PDF导出器。所以我的列表理解增加了三个问题,跳转到下一页,再增加三个。随着问题数量的增加,代码最终看起来一团糟:

call_functions([x for x in function_list[0:3]] + [function_list[-1]] + [x for x in function_list[3:6]]+ [function_list[-1]] + [x for x in function_list[6:9]])

生成

call_functions([iron,cobalt,nickel,footer,copper,zinc,vanadium,footer,chromium,managenese,titanium]) #as desired

虽然这是可行的,但我正在尝试创建一个单一的理解列表,它将遍历列表,并在每三个元素之后插入列表中的最后一个元素。甚至把页脚放在列表之外也是可行的。但我不能让它工作。你知道吗

我试过:

[x for i,x in enumerate(function_list[0:9]) if i%3==0 function_list[-1] else x]

致SyntaxError。你知道吗

也尝试过:

[x if i%3==0 function_list[-1] else x for i,x in enumerate(function_list[0:9])]

也适用于SyntaxError

有人能告诉我(或指点我)我做错了什么,和/或指点类似的案子吗?你知道吗

谢谢


Tags: 函数in列表forpdffunctioncallfunctions
2条回答

没关系,我想我成功了。你知道吗

对我起作用的是:

call_functions([x if (i+1)%4!=0 else function_list[-1] for i,x in enumerate(function_list)])

如果我这样做了

if i%4!=0 #making the fourth element function footer

我得到一个以footer函数开头的列表。但是做:

if (i+1)%4!=0

我回避最初的问题。我得到:

call_functions([iron,cobalt,nickel,footer,copper,zinc,vanadium,footer,chromium,managenese,titanium,footer])

我相信一定有其他的方法来做这个更简单和整洁,任何建议欢迎。你知道吗

谢谢!你知道吗

例如

[func for i in range(0, len(function_list) - 1, 3) for func in function_list[i:i+3] + [function_list[-1]]]

输出:

>>>

['iron',
 'cobalt',
 'nickel',
 'footer',
 'copper',
 'zinc',
 'vanadium',
 'footer',
 'chromium',
 'managenese',
 'titanium',
 'footer']

相关问题 更多 >

    热门问题