对不起,我很基本的问题,改变在列表值,但其实这是一个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