具有多个条件的列表理解

时间:2019-07-09 11:39:58

标签: python list list-comprehension

此刻,我试图弄清楚如何使用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_)

6 个答案:

答案 0 :(得分:2)

您有2种非常简单的方法来获得所需的结果。

您可以使用in运算符,并且由于boolint的子集,只需将其强制转换为int

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

或者仅使用star运算符解压缩length-2的零列表,然后将1放在两端,而无需循环

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

答案 1 :(得分:1)

首先,{}定义一个字典,[]定义一个列表,而您定义的是字典而不是列表。

第二,这就是您想要的

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

您要在开始和结束处设置集合1,但在其中的1,2,3等处

第三,您将条件设置为在开头和结尾处放置0而不是1。

答案 2 :(得分:0)

使用列表理解

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]

答案 3 :(得分:0)

这里

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)

答案 4 :(得分:0)

有一个简单的方法可以做到这一点。 这是我的代码:

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

希望我能帮上忙!

答案 5 :(得分:0)

我在这里使用短路表达式,而不是三元条件(就像Imtinan Azhar's answer

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