[英]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.