首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python while,continue循环

Python while,continue循环
EN

Stack Overflow用户
提问于 2012-10-11 20:27:45
回答 3查看 413关注 0票数 0

我的输入文件是每行一句话。假设它看起来像这样:

代码语言:javascript
复制
A
B
C
D
E
F

期望的输出为:

代码语言:javascript
复制
::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E
F

我知道我应该使用while循环,但不确定如何使用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-11 20:29:37

这里不需要while循环--看看itertools中的the grouper recipe

代码语言:javascript
复制
def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

请注意,如果您使用的是2.x,则需要a slightly different version

例如:

代码语言:javascript
复制
items = ["A", "B", "C", "D", "E"]
for page in grouper(2, items):
    print("::NewPage::")
    for item in page:
        if item is not None:
            print(item)

这会产生:

代码语言:javascript
复制
::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E

如果需要None值,可以使用sentinel对象。

票数 4
EN

Stack Overflow用户

发布于 2012-10-11 20:44:00

我不知道这是否会困扰PEP-8的众神。

但另一种语言不可知的选择(更一般的受众可以理解)可能是:

代码语言:javascript
复制
items = ["A", "B", "C", "D", "E"]
out = []

for i,item in enumerate(items):
    if i%2 == 0:
        out.append("::New Page::")
    out.append(item)

编辑:这就是当你在写完你的答案之前没有检查是否有新的答案时发生的事情。我的答案与cdarke的答案基本相同。

票数 2
EN

Stack Overflow用户

发布于 2012-10-11 20:35:58

是像这样吗?在Python 3.3上测试:

代码语言:javascript
复制
i = 0
page_size = 2
lines = []

for line in open("try.txt"):
    lines.append(line)
    i += 1
    if i % page_size == 0:
        print("::NewPage::")
        print("".join(lines),end="")
        i = 0
        lines = []
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12839529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档