[英]python double iterator in list comprehension
所以如果我在 S 的所有索引位置都有 1,其余的都是 0。 新字符串的長度將為 N。我如何在 Python 列表理解中做到這一點
S= [2,5,8]
N= 10
Desired output: [0,1,0,0,1,0,0,1,0,0]
我的代碼:
newlist = [1 if x.__index__() == S[i] else 0 for i in range(len(S)) for x in range(N)]
My Output: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]
直接的解決方案是不使用列表理解:
result = [0] * N
for i in S:
result[i - 1] = 1
請注意,需要i - 1
才能將列表S
基於 1 的索引轉換為基於 0 的索引。 如果您的列表中有基於 0 的索引(這對於大多數用途來說會更簡單),那么您可以只寫result[i] = 1
。
output = [1 if i+1 in S else 0 for i in range(N)]
如果您的 S 列表使用基於 1 的索引
[int(i in S) for i in range(1, N+1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.