![](/img/trans.png)
[英]What is the most pythonic way to iterate through a long list of strings and structure new lists from that original list?
[英]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.