簡體   English   中英

具有多個條件的列表理解

[英]List Comprehension with Multiple Conditions

目前,我正在嘗試找出如何使用List Comprehension解決一個簡單的問題。 關鍵是要創建一個列表,並在列表的開頭和結尾處用1填充。 其余元素填充為0。

我已經嘗試了以下方法:

desired_length = int(input('Enter the desired length: '))
list_=[0 if x==0 if x==desired_length-1 else x for x in range(desired_length)]
print(list_)

編輯固定方括號

這是我要轉換的代碼:

def test():
    desired_length = int(input('Enter the desired length: '))
    list_ = []
    for i in range(desired_length):
        if i == 0 or i == desired_length - 1:
            list_.append(1)
        else:
            list_.append(0)
    print(list_)

您有2種非常簡單的方法來獲得所需的結果。

您可以使用in運算符,因為boolint的子集,只需將其轉換為int

list_ = [int(i in (0, desired_length - 1)) for i in range(desired_length)]

或者只是使用星操作解壓的零的列表length-2並把1的每一端,無需循環

list_ = [1, *([0]*(desired_length-2)), 1]

首先,字典由{}定義,列表由[]定義,您在定義字典而不是列表。

其次,這就是你想要的

[1 if (idx==0 or idx == (desired_length-1)) else 0 for idx in range(desired_length)]

您正在做的事情在開始和結束處設置了1,但是在其中的1,2,3等

第三,您將條件設置為在開始和結束處放置0而不是1。

使用列表理解

desired_length = int(input('Enter the desired length: '))
list_ = [(1 if i in [0,desired_length-1] else 0) for i in range(desired_length)]
print(list_)

產量

Enter the desired length: 10
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1]

這里

desired_length = int(input('Enter the desired length: '))
lst = [1 if idx == 0 or idx == desired_length-1 else 0 for  idx,x in enumerate(range(desired_length))]
print(lst)

有一個簡單的方法可以做到這一點。 這是我的代碼:

def test():
    desired_length = int(input('Enter the desired length: '))
    list_ = [0]*desired_length
    list_[0]=1
    list_[-1]=1

希望我能幫上忙!

我在這里使用短路表達式而不是三元條件(就像Imtinan Azhar的答案一樣

[int(idx==0 or idx==desired_length - 1) for idx in range(desired_length)]

暫無
暫無

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

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