[英]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.