【问题标题】:Want create a new list from existing list using if else statement想要使用 if else 语句从现有列表创建一个新列表
【发布时间】:2019-07-15 08:00:10
【问题描述】:

我想使用现有列表“dta”创建一个新列表,其中我不想要“banana”的值,而是其他人的数字。 所需列表如下:

[1,3,4,5,6]

但是当我试图打印我的最终列表“d”时,我只得到一个值。

dta=list(["apple","banana","pine","cucumber","Guava","Coconut"])

d=[]
def cont_list(x):

for i in x:
    if i=="banana":
        continue
if i=="pine":
    d.append(3)

elif i=="apple":
    d.append(1)

elif i=="cucumber":
    d.append(4)
elif i=="Guava":
    d.append(5)
else:
    d.append(6)

return d   

cont_list(dta)
print(d)

【问题讨论】:

  • 这里的缩进看起来很糟糕,你能检查一下并修复吗?
  • 当我修复缩进时,您的代码给了我[1, 3, 4, 5, 6]。这是预期的结果吗?请注意,if ifor 循环之外时不会抛出错误。
  • 其他编辑请注意,请不要自行修复此问题的缩进,您可能会不小心摆脱 OP 代码中的错误。这很可能是缩进不良的情况。请注意 OP,请编辑问题并显示您的确切代码。
  • @Guy 您是否使用了我的代码并获得了所需的列表?你能建议更正吗?
  • @SanchitAluna 您的代码在正确缩进时可以工作。没有其他需要修复的。

标签: python list if-statement jupyter-notebook list-comprehension


【解决方案1】:

你可以通过列表理解来做到这一点:

dta = ["apple","banana","pine","cucumber","Guava","Coconut"]

d = [idx for idx in range(1,len(dta)+1) if dta[idx-1] != "banana"]
print (d)

在功能中:

dta=list(["apple","banana","pine","cucumber","Guava","Coconut"])

def cont_list(x):
    dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
    d = [idx for idx in range(1,len(dta)+1) if dta[idx-1] != "banana"]
    return d
print (cont_list(dta))

输出:

[1, 3, 4, 5, 6]

注意:如果你修复了 INDENTION,你的代码就可以了:

d=[]
def cont_list(x):

    for i in x:
        if i=="banana":
            continue
        if i =="pine":
            d.append(3)

        elif i=="apple":
            d.append(1)

        elif i=="cucumber":
            d.append(4)
        elif i=="Guava":
            d.append(5)
        else:
            d.append(6)
    return d

cont_list(dta)
print(d)

或者你可以这样做:

d=[]
def cont_list(x):

    for i in range(len(x)):
        if x[i]=="banana":
            continue
        else:
            d.append(i+1)
    return d

cont_list(dta)
print(d)

【讨论】:

  • 不客气。我很高兴我帮助了:) 一般不要忘记投票或接受答案:)
【解决方案2】:

您似乎想使用项目的索引(加一)...这可以通过简单的列表理解来完成:

dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [dta.index(e) + 1 for e in dta if e != 'banana']

或者使用enumerate(我希望在大型列表的情况下稍微快一点):

dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [i for i, e in enumerate(dta, 1) if e != 'banana']

【讨论】:

  • 感谢您的快速回答,但我们可以使用 if else loop in function 来做到这一点吗?
  • @SanchitAluna 1. 您可以按照其他人的说明修复缩进。 2. 你将我展示的列表理解更改为函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2020-07-30
相关资源
最近更新 更多