Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要使用if-else语句从现有列表创建新列表吗_Python_List_If Statement_Jupyter Notebook_List Comprehension - Fatal编程技术网

Python 要使用if-else语句从现有列表创建新列表吗

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创建一个新的列表,其中我不想要香蕉的值,而想要其他的数值。 所需列表如下:

但当我试图打印我的最终列表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)

看起来你想用项目的索引加上一。。。这可以通过简单的列表理解来完成:

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.你把我给你看的名单改成一个函数,不客气。我很高兴我帮了忙:一般来说,不要忘记投票或接受答案: