Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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函数和列表的混淆_Python - Fatal编程技术网

关于Python函数和列表的混淆

关于Python函数和列表的混淆,python,Python,我试图创建一个函数,通过指定的索引或传递的项从传递的列表中删除一个项 如果用户希望使用索引从列表中删除项目,则传递的第三个参数将是“index”,如果用户希望使用传递的项目删除列表中找到的第一个项目,则第二个参数将是“{item}” 例如,要从列表中删除索引3处的项,可以使用命令myFunctionmyList,3“index” 我对这个功能部分很困惑。我编写的代码完全符合问题的要求,但它没有使用函数。我的代码如下: mylist = ["one" , "two" ,"three" , "fou

我试图创建一个函数,通过指定的索引或传递的项从传递的列表中删除一个项

如果用户希望使用索引从列表中删除项目,则传递的第三个参数将是“index”,如果用户希望使用传递的项目删除列表中找到的第一个项目,则第二个参数将是“{item}”

例如,要从列表中删除索引3处的项,可以使用命令myFunctionmyList,3“index”

我对这个功能部分很困惑。我编写的代码完全符合问题的要求,但它没有使用函数。我的代码如下:

mylist = ["one" , "two" ,"three" , "four" , "five"]
print "list is composed of: "+ str(mylist)
name = raw_input("Index of item to be removed. ex.  1")
name2 = raw_input('"item to be removed. ex. four')
name3 = int(name)
del mylist[name3]
mylist.remove(name2)
print mylist

似乎我需要创建一个函数来完成这项工作,然后传入我的列表、索引/项目等。但我对这一部分非常迷茫

你真的需要提高提问技巧。很难理解你想要完成什么。在做了大约六个假设之后,我认为这就是你想要做的:

def listRemover(mylist,index_or_name,mytype):
    if mytype == "index":
        del mylist[index_or_name]

    if mytype == "name":
        mylist.remove(index_or_name)
很明显,在python的基础知识中存在一些漏洞。你需要研究什么是函数,为什么它们有用,以及如何使用它们

似乎我需要创建一个函数来完成这项工作,然后传入我的列表、索引/项目等。但我对这一部分非常迷茫

query=定义函数python

展示你的研究成果。函数的基本形式是:

def funcname(arg1, arg2, arg3):
   # now you can use the vars arg1, arg2, and arg3.
   # rename them to whatever you want.
   arg1[0] = "bannanas"
所以


我想的问题是:如果用户希望使用索引从列表中删除一个项,那么传递的第三个参数将是“index”,如果用户希望使用传递的项删除列表中找到的第一个项,那么第二个参数将是“{item}”

本练习的目的大概是练习编写函数。是的,你可以不用函数就可以完成,但是现在你需要练习写函数和传递参数。函数是编程的一个非常重要的部分,但这不是一个好地方

首先我们定义我们的函数:

def removeItem( theList, theItem, typeOfItem=None ):
注意,由于第三个参数是可选的,所以我给出了一个默认值None

我们要做的第一件事是测试项目的类型。问题是它是一个索引,然后它会说index,否则第二个参数会说{item}。因此,它将是一个或另一个。如果不是这样,你应该问一个问题

索引部分很简单:

    if typeOfItem == "index":
        del(theList[theItem])
但是现在它有点复杂,因为{},我们必须删除它:

    else:
        theList.remove(theItem[1:-1])
最后一部分是删除一个片段,该片段从第二个字符的字符1开始,到最后一个字符-1结束,从而删除{}

因此,最终的功能代码和测试是:

def removeItem( theList, theItem, typeOfItem=None ):
    if typeOfItem == "index":
        del(theList[theItem])
    else:
        theList.remove(theItem[1:-1])

mylist = ["one" , "two" ,"three" , "four" , "five"]
removeItem(mylist, 3, "index")
print mylist

mylist = ["one" , "two" ,"three" , "four" , "five"]
removeItem(mylist, "{two}")
print mylist

请注意函数和列表的一个重要特性。如果您在函数内部修改列表,那么它也会在函数外部修改列表-它是相同的列表。数字和字符串并非如此。

您的代码既按索引删除,又按值删除。EDX不是教您如何使用def myFunction定义函数吗?是的,我知道我的代码同时执行这两项操作,但它要求将此代码作为函数的一部分来执行,而我在使用myfunctionmylist、3、index等时感到困惑@barmar如果你有一个链接到那个页面,我会喜欢它,我的pdf文件没有明确定义如何做到这一点。如果这些都是很简单的问题,我很抱歉,我对这个很陌生,我对EDX一无所知。但是他们怎么能根据他们还没有教过的东西来布置家庭作业呢?我现在只做了两周,所以我的知识有很多漏洞:/使用一个叫做type的变量不是一个好主意,它将掩盖相同名称的内置项。@ed.hank请看,但当您使用堆栈溢出作为拐杖来填补知识中的基本漏洞时,您将压倒具有中级到高级知识的人。如果您发现自己对基本概念非常迷茫,那么堆栈溢出不应该是您的目标。你的教授或助教应该是你的第一道防线。啊,检查一下,我会删除我的问题。对此很抱歉:/我试图删除它,它说版主需要删除它。如果有人能把它删掉就好了。再次抱歉:没问题。很多新手都这么做,你肯定不是第一个。另外,如果你有点进步,试着回答一些python问题。很多人来这里自助,但很少有人留下来帮助别人。
def removeItem( theList, theItem, typeOfItem=None ):
    if typeOfItem == "index":
        del(theList[theItem])
    else:
        theList.remove(theItem[1:-1])

mylist = ["one" , "two" ,"three" , "four" , "five"]
removeItem(mylist, 3, "index")
print mylist

mylist = ["one" , "two" ,"three" , "four" , "five"]
removeItem(mylist, "{two}")
print mylist