2012-02-27 103 views
2

對不起,我很基本的問題,改變在列表值,但其實這是一個2部分的問題:Python入門:根據病情

  1. 給出一個列表,我需要更換的價值「? 「 'i'和'x'是一個整數,10.列表並不總是有相同數量的元素,所以我需要一個允許我這樣做的循環。

    a = ['1', '7', '?', '8', '5', 'x'] 
    
  2. 如何獲取值等於'?'的索引。這很好,如果這顯示我如何能夠獲取列表中的所有索引和值。

+1

當你說「鍵和值」時,你真的指的是指數和值嗎?鍵/值對與字典一起使用,而不是列表。 – 2012-02-27 18:22:08

+0

對不起,我的意思是索引。 – sudostack 2012-02-27 19:56:20

回答

3

寫功能,並使用map()調用它的每一個元素:

def _replaceitem(x): 
    if x == '?': 
     return 'i' 
    elif x == 'x': 
     return 10 
    else: 
     return x 

a = map(_replaceitem, a) 

注意,這將創建一個新的列表。如果列表太大或者由於某些其他原因而不希望出現此列表,則可以使用for i in xrange(len(a)):,然後在必要時更新a[i]

要從列表中獲得(index, value)對,請使用enumerate(a),它返回產生此類對的迭代器。

要獲得列表中包含給定值的第一個索引,請使用a.index('?')

3

爲1:

for i in range(len(a)): 
    if a[i] == '?': 
     a[i] = 'i' 
    elif a[i] == 'x': 
     a[i] = 10 

對於2,你所說的 「鑰匙」 是什麼意思?如果你的意思指數:

index = a.index('?') 
2

它被稱爲 '索引' 功能:

>>> a = ['1', '7', '?', '8', '5', 'x'] 
>>> a.index('?') 
2 
1
a = ['1', '7', '?', '8', '5', 'x'] 
for index, item in enumerate(a): 
    if item == "?": 
     a[index] = "i" 
    elif item == "x": 
     a[index = 10 

print a 
2

只是因爲沒有人沒有提到它,這是我最喜歡的非for循環成語像這樣進行更換:

>>> a = ['1', '7', '?', '8', '5', 'x'] 
>>> reps = {'?': 'i', 'x': 10} 
>>> b = [reps.get(x,x) for x in a] 
>>> b 
['1', '7', 'i', '8', '5', 10] 

.get()方法是非常有用的,並可擴展至比好如果/ elif鏈。