簡體   English   中英

Python 列表理解:從 2 個列表構建列表

[英]Python list comprehension : build a list from 2 lists

這段代碼

colors = ["#F1A141", "#52D987", "#12A3FF", "#FF3F94", "#564DA6"]
skills = [3, 4, 4, 2, 3]
palette = [(item for i in range(skills[index])) for (index, item) in enumerate(colors)]

不返回錯誤但有錯誤的列表項

[<generator object <listcomp>.<genexpr> at 0x7f302eac9650>, <generator object <listcomp>.<genexpr> at 0x7f302eac9550>, ... ]

我的錯誤在哪里?

編輯:預期的 output 是一個列表,其中包含 3 個"#F1A141"項,后跟 4 個"#52D987"項,依此類推。

這是一個生成器表達式: (item for i in range(skills[index])如果你想要一個列表的列表,你需要在理解中使用[]

鑒於您想要的 output,將兩個列表zip並避免range可能更簡單。 然后嵌套理解以展平它:

colors = ["#F1A141", "#52D987", "#12A3FF", "#FF3F94", "#564DA6"]
skills = [3, 4, 4, 2, 3]

[c for color, n in zip(colors, skills) for c in [color] * n]

產生:

['#F1A141',
 '#F1A141',
 '#F1A141',
 '#52D987',
 '#52D987',
 '#52D987',
 '#52D987',
 '#12A3FF',
 '#12A3FF',
 '#12A3FF',
 '#12A3FF',
 '#FF3F94',
 '#FF3F94',
 '#564DA6',
 '#564DA6',
 '#564DA6']

暫無
暫無

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

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