簡體   English   中英

Python while,繼續循環

[英]Python while, continue loops

我的輸入文件是每行一句話。 假設它看起來像:

A
B
C
D
E
F

所需的輸出是:

::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E
F

我知道我應該使用while循環,但不確定如何?

您這里不需要while循環-查看itertoolsgrouper食譜

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 版本,則需要稍有不同的版本

例如:

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)

產生:

::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E

如果需要“ None值,則可以使用哨兵對象。

我不知道這是否會打擾PEP-8的眾神。

但是語言不可知的替代方案(更普通的讀者可以理解)可能是:

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的相同。

像這樣? 在Python 3.3上測試:

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 = []

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM