對不起,我很基本的問題,改變在列表值,但其實這是一個2部分的問題:Python入門:根據病情
給出一個列表,我需要更換的價值「? 「 'i'和'x'是一個整數,10.列表並不總是有相同數量的元素,所以我需要一個允許我這樣做的循環。
a = ['1', '7', '?', '8', '5', 'x']
如何獲取值等於'?'的索引。這很好,如果這顯示我如何能夠獲取列表中的所有索引和值。
對不起,我很基本的問題,改變在列表值,但其實這是一個2部分的問題:Python入門:根據病情
給出一個列表,我需要更換的價值「? 「 'i'和'x'是一個整數,10.列表並不總是有相同數量的元素,所以我需要一個允許我這樣做的循環。
a = ['1', '7', '?', '8', '5', 'x']
如何獲取值等於'?'的索引。這很好,如果這顯示我如何能夠獲取列表中的所有索引和值。
寫功能,並使用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('?')
。
爲1:
for i in range(len(a)):
if a[i] == '?':
a[i] = 'i'
elif a[i] == 'x':
a[i] = 10
對於2,你所說的 「鑰匙」 是什麼意思?如果你的意思指數:
index = a.index('?')
它被稱爲 '索引' 功能:
>>> a = ['1', '7', '?', '8', '5', 'x']
>>> a.index('?')
2
開始通過閱讀Built-in Types section of the Library Reference。我認爲你正在尋找list.index
。
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
只是因爲沒有人沒有提到它,這是我最喜歡的非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鏈。
當你說「鍵和值」時,你真的指的是指數和值嗎?鍵/值對與字典一起使用,而不是列表。 – 2012-02-27 18:22:08
對不起,我的意思是索引。 – sudostack 2012-02-27 19:56:20