学习Python:根据条件更改列表中的值
很抱歉提出了一个非常基本的问题,但这实际上是一个由两部分组成的问题:学习Python:根据条件更改列表中的值,python,Python,很抱歉提出了一个非常基本的问题,但这实际上是一个由两部分组成的问题: 给定一个列表,我需要将“?”的值替换为“I”,将“x”的值替换为整数10。列表并不总是有相同数量的元素,因此我需要一个允许我这样做的循环 a = ['1', '7', '?', '8', '5', 'x'] 如何获取值等于“?”的索引。如果这能告诉我如何抓取列表中的所有索引和值,那就太好了 为其编写函数,并使用map()对每个元素调用它: def _replaceitem(x): if x == '?':
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]
要从列表中获取(索引,值)
对,请使用它返回生成此类对的迭代器
要获取列表中包含给定值的第一个索引,请使用。表示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
从阅读文章开始。我认为您正在寻找
list.index
只是因为还没有人提到它,下面是我最喜欢的非for循环习惯用法,用于执行以下替换:
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
>>> 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]
该方法非常有用,并且比if/elif链更具可扩展性。您现在可以使用lambda
# replace occurrences of ?
a = map(lambda x: i if x == '?' else x, a)
# replace occurrences of x
a = list(map(lambda x: 10 if x == 'x' else x, a))
当你说“键和值”时,你实际上是指索引和值吗?键/值对用于dict,而不是列表。