2013-10-14 83 views
0

這三個功能是我學習指南的一部分,非常感謝您的幫助。 在每種情況下,該函數都會返回一個值(所以使用return語句):它不會打印其任何參數的值(不打印語句)或mutate(更改其值)。使用Python的基本列表操作

1)repl函數有三個參數: oold是任何值; ?新是任何值; xs是一個列表。

Example: 
>>> repl('zebra', 'donkey', ['mule', 'horse', 'zebra', 'sheep', 'zebra']) 
['mule', 'horse', 'donkey', 'sheep', 'donkey'] 

它返回一個新的列表,通過用new來替換xs中的每一個old。

它不得改變列表xs;即從函數返回後,爲xs給出的實際參數必須是以前的值。

>>> friends = ['jules', 'james', 'janet', 'jerry'] 
>>> repl('james', 'henry', friends) 
['jules', 'henry', 'janet', 'jerry'] 
>>> friends 
['jules', 'james', 'janet', 'jerry'] 

2)搜索功能在列表中查找值。它有兩個參數: ◦y是要搜索的值。 ◦xs是正在搜索的列表。

它返回y中第一次出現的索引,如果它發生的話;否則爲-1。

Examples: 
>>> words = ['four', 'very', 'black', 'sheep'] 
>>> search('four', words) 
0 
>>> search('sheep', words) 
3 
>>> search('horse', words) 
-1 

3)雙打功能被賦予號碼的列表,並返回包含每個數字的雙打在給定列表的新列表。

Example: 
>>> doubles([1, 3, 7, 10]) 
[2, 6, 14, 20] 

它必須發生變異的定列表:

>>> salaries = [5000, 7500, 15000] 
>>> doubles(salaries) 
[10000, 15000, 30000] 
>>> salaries 
[5000, 7500, 15000] 

這是不使用除追加任何列表的方法來完成。 (特別是,您可能不會使用索引或計數作爲搜索功能。)

儘管您可以使用list len函數和列表操作+,*,索引,切片和==來比較列表或元素。您將需要使用其中一些但不是全部。

任何幫助,如我在介紹中提到的非常感謝。

到目前爲止,我所擁有的就是。

def repl (find, replacement, s): 
    newString = '' 
    for c in s: 
     if c != find: 
      newString = newString + c 
     else: 
      newString = newString + replacement 
    return newString 

def search(y, xs): 
     n = len(xs) 
     for i in range(n): 
      if xs[i] == y: 
       return i 
     return -1 

和....

def search(key,my_list): 
    if key in my_list: 
    return my_list.index(key) 
    else: 
    return 

我不知道需要else語句後可能返回的。

+3

您有什麼問題? – Paco

+0

我沒有得到正確的答案,如示例中所示。還有最後兩個問題的代碼,我還沒有編譯。我試圖用這種方式來恢復記憶,並且在記住正確的解決方案時遇到了一些麻煩。 – HTCone

+1

你可以用你在這裏添加的細節來編輯你的文章嗎?你將有更好的機會找到正確的答案 – Paco

回答

0
def relp(old,new,my_list): 
    final = [] 
    for x in my_list: 
    if x is old: 
     final.append(new) 
    else: 
     final.append(x) 
    return final 


def search(key,my_list): 
    if key in my_list: 
     return my_list.index(key) 
    else: 
     return -1 

def doubles(my_list): 
    return[x*x for x in my_list] 
0

我懷疑這個教訓是約列表內涵

doubles = lambda my_list: [x*2 for x in my_list] 
repl = lambda old_t,new_t,my_list: [x if x != old_t else new_t for x in my_list] 

print repl("cow","mouse",["cow","rat","monkey","elephant","cow"]) 
print doubles([1,2,3,4,'d'])