簡體   English   中英

列表理解中的python雙迭代器

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

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