簡體   English   中英

Pythonic迭代字符串列表的方法?

[英]Pythonic way to iterate through list of strings?

目前,我將以下內容作為將角色放入某種視覺文本地圖的方式。 我想知道,如果有一個非常好的簡潔,pythonic方式做這個雙重迭代。 有任何想法嗎?

lines = ['abc','456','xyz']
chars = {}
for i, row in enumerate(lines):
    for j, c in enumerate(row):
        chars[i,j] = c

您可以將其表示為字典理解:

chars = {(i, j): c for i, row in enumerate(lines) for j, c in enumerate(row)}

它基本上是相同的迭代,只是表達了一點點不同。

使用詞典理解。 閱讀嵌套理解的關鍵: “只需讀取它們就像普通循環一樣,首先描述”大循環“,然后將嵌套在其中的后續循環” 1

In [1]: lines = ['abc','456','xyz']

In [2]: {(i,j): c for i, row in enumerate(lines) for j, c in enumerate(row)}
Out[2]: 
{(0, 0): 'a',
 (0, 1): 'b',
 (0, 2): 'c',
 (1, 0): '4',
 (1, 1): '5',
 (1, 2): '6',
 (2, 0): 'x',
 (2, 1): 'y',
 (2, 2): 'z'}

您可以將理解分為多行,以使其更具可讀性。 如果仔細觀察 ,實際上常規循環非常相似 ,只有最后一行才開始。

除此之外,我建議閱讀Brandon Rhodes的博客文章: “我終於理解了嵌套的理解”

# Comprehension                       # Regular for loop

{(i,j):c                              # chars = {}
    for i, row in enumerate(lines)    # for i, row in enumerate(lines):
        for j, c in enumerate(row)}   #     for j, c in enumerate(row):
                                      #          chars[i,j] = c

暫無
暫無

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

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