簡體   English   中英

多個列表的列表理解

[英]list comprehension for multiple lists

是否可以將這樣的循環轉換為列表理解?

lst_a = []
lst_b = []
lst_c = []
    
test_dict = {'a':1, 'b':2, 'c':3, 'd':4} 

for k, v in test_dict.items():
    lst_a.append(k)
    lst_b.append(k.upper())
    lst_c.append((k+k))

例如,對於這樣的事情:

lst_a, lst_b, lst_c = [list comprehension logic here for the above loop]

注意: output 必須是三個單獨的列表,就像循環中的列表一樣。

嘗試使用zip()

test_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

lst_a, lst_b, lst_c = zip(*[(k, k.upper(), k+k) for k in test_dict])

# Convert them to list
# lst_a, lst_b, lst_c = map(list, zip(*[(k, k.upper(), k+k) for k in test_dict)])) 

# Iterate this dict three times.
# lst_a, lst_b, lst_c = ([k for k in test_dict], [k.upper() for k in test_dict], [k + k for k in test_dict])
print(lst_a,lst_b,lst_c)

使用列表推導的最簡單方法

lst_a = []
lst_b = []
lst_c = []
    
test_dict = {'a':1, 'b':2, 'c':3, 'd':4} 

[[lst_a.append(k), lst_b.append(k.upper()), lst_c.append(k+k)] for k in test_dict]

print(lst_a, lst_b, lst_c)

output - ['a', 'b', 'c', 'd'] ['A', 'B', 'C', 'D'] ['aa', 'bb', 'cc', 'dd']

暫無
暫無

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

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