2013-10-15 43 views
-9

我想編寫一個函數,它需要三個參數 - type1,type2index - 並且應該返回type1,並在索引處插入type2的元素。Python使用索引聲明函數

下面是一些示例I/O

do_something ([21, 32, 23], ['f', 'g', 'c'], 2) 

[21, 32, 'f', 'g', 'c', 23] 

這是我到目前爲止有:

def do_something(type1, type2, index) 

return do_something 

顯然我錯了,在這裏做什麼,但我不知道是什麼。

+1

我不是這個意思是粗魯的,但你到目前爲止沒有什麼......你剛剛寫出了一個規範。你覺得你應該怎麼做? – Ben

+0

如何在第二個列表@tobias_k的第i個和第i + 1個索引之間插入一個列表的元素。 – Ben

+0

如何調用參數索引? – user2883864

回答

0

索引不是一種特殊的參數。你會像其他任何東西一樣傳遞它。你有什麼好,但你必須弄清楚如何在def和return語句之間編寫函數。看看這些文檔,如果你對它們有特定的問題,並且可以顯示你所嘗試過的內容,就回來看看。

1

如果你的意思是你不知道如何通過索引來訪問列表,使用索引訪問操作,即[]

>>> x = [1, 2, 3] 
>>> x 
[1, 2, 3] 
>>> x[1] = 99 
>>> x 
[1, 99, 3] 
>>> x[2] = [1,2,3] 
>>> x 
[1, 99, [1, 2, 3]] 

交互式解釋是你的朋友! dir(list)help()功能也很友善。

0

如果參數是列表的索引,那麼「索引」作爲參數名稱是完全正確的。在python中有一些你應該避免的名字,比如「list」或者「str」,但是「index」不是其中的一個。如果您認爲該參數的含義不明確,則可以隨時向該函數添加註釋或文檔字符串。

def do_something(type1, type2, index): 
    type1[index:index] = type2 

這樣做是:


至於功能上的身體,你可以使用這個符號插入另一個列表到列表中它以列表type1的元素從index(含)到index(不包括),用給定的列表替換。由於切片是空的,所以實際上沒有元素被替換,但是第二個列表是,在該位置插入

請注意,這將修改原始列表type1。使用此,而不是創建並返回一個新的列表:

def do_something(type1, type2, index): 
    return type1[:index] + type2 + type1[index:] 

這需要的type1的元素,直到index(不含),並與type2連接它們和type1index起(含)的元素。

在這兩種情況下,結果是

[21, 32, 'f', 'g', 'c', 23] 
3

我覺得這回答你的問題,你想要做什麼:

def do_something(list1, list2, index): 
    list1[index:index] = list2 
    return list1 

print(do_something([21, 32, 23], ['f', 'g', 'c'], 2)) 

輸出:

[21, 32, 'f', 'g', 'c', 23] 
+0

這個與最後一個有什麼不同? – user2883864

+0

它不會調用'list1'內嵌入'list2'的'insert()'方法 - 而是它有效地將'list2'的各個元素插入指定索引處的'list1'中。 – martineau

+0

小修正:它並不真正將元素插入到'list1'中,但會創建一個新列表而不修改任何一個列表。 ;-) –