Python 要使用if-else语句从现有列表创建新列表吗
我想使用现有的列表dta创建一个新的列表,其中我不想要香蕉的值,而想要其他的数值。 所需列表如下: 但当我试图打印我的最终列表d时,我只得到一个值Python 要使用if-else语句从现有列表创建新列表吗,python,list,if-statement,jupyter-notebook,list-comprehension,Python,List,If Statement,Jupyter Notebook,List Comprehension,我想使用现有的列表dta创建一个新的列表,其中我不想要香蕉的值,而想要其他的数值。 所需列表如下: 但当我试图打印我的最终列表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
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)
看起来你想用项目的索引加上一。。。这可以通过简单的列表理解来完成:
dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [dta.index(e) + 1 for e in dta if e != 'banana']
dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [idx for idx in range(1,len(dta)+1) if dta[idx-1] != "banana"]
print (d)
或者使用enumerate,我希望在大列表的情况下稍微快一点:
dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [i for i, e in enumerate(dta, 1) if e != 'banana']
您可以通过列表理解来完成此操作:
dta = ["apple","banana","pine","cucumber","Guava","Coconut"]
d = [dta.index(e) + 1 for e in dta if e != 'banana']
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=列表[苹果、香蕉、松树、黄瓜、番石榴、椰子]
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]
注意:如果您修复缩进,您的代码就可以了:
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)
这里的缩进看起来很糟糕,你能检查并修复吗?我修复缩进时,你的代码给了我[1,3,4,5,6]。这是预期的结果吗?请注意,如果我在for循环之外不会抛出错误。请注意其他编辑器,请不要自己修复此问题的缩进,您可能会意外地在OP的代码中消除错误。这很可能是压痕不良的情况。请注意,请编辑问题并显示您的确切代码。@Guy您是否使用了我的代码并获得了所需的列表?你能建议更正吗?@SanchitAluna当缩进正确时,你的代码可以工作。没有其他问题需要解决。谢谢您的快速回答,但是我们可以用if-else循环函数来解决吗?@SanchitAluna 1。您可以按照其他人的解释修复缩进。2.你把我给你看的名单改成一个函数,不客气。我很高兴我帮了忙:一般来说,不要忘记投票或接受答案: