簡體   English   中英

關於Python函數和列表的困惑

[英]Confusion about Python Functions and Lists

我正在嘗試創建一個函數,以通過指定的索引或傳遞的項目從傳遞的列表中刪除一個項目。

如果用戶希望使用索引從列表中刪除一個項目,則傳遞的第三個參數將是“index” ,如果用戶希望使用傳遞的項目從列表中刪除第一個參數,則第二個參數將是“{item}”

例如,要從列表中刪除索引3處的項目,這將是命令myFunction(myList,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的基本知識上有一些空白。 您需要研究什么是功能,為什么有用以及如何使用它們。

看來我需要創建一個函數來執行此操作,然后傳遞我的列表,索引/項目等),但是我對此非常迷失。

谷歌一下! (查詢=“定義函數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"

所以,

array = ['mango', 'apple']
funcname(array)
print(array) # -> ['bannanas', 'apple']

問題(我認為)是:“ 如果用戶希望使用索引從列表中刪除一個項目,則如果用戶希望使用該項目從列表中刪除第一個項目,則傳遞的第三個參數將是“ index”。通過,第二個參數將為“ {item}

本練習的目的(大概)是練習編寫函數。 是的,您可以在沒有函數的情況下執行此操作,但是現在您需要練習編寫函數並傳遞參數。 函數是編程中非常重要的部分,但這並不是一個適合的地方。

首先,我們定義函數:

def removeItem( theList, theItem, typeOfItem=None ):

注意,由於第三個參數是可選的,因此我給了默認值None

我們要做的第一件事是測試typeOfItem 問題是說它是一個索引,然后它將說"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

注意該功能和列表的重要功能。 如果您更改函數內部的列表,那么它也會同時更改函數外部的列表-它是相同的列表。 數字和字符串不是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM