我知道列表理解是如何擅长返回列表子集,甚至是在没有设置条件的情况下进行全面的重构。但是,筛选条件将返回列表中可能小于筛选列表的值。如何获得返回值的位置并有条件地更改这些元素?
以下是一个简单的例子,
>>> v = ['a' , 'b' , 'c' , 'd' , 'f' , 'k' , 'g' , 'a', 'd']
>>> t = ['a', 'k']我如何修改v在t中的元素,以映射到新的值,比如'z',以产生类似的结果
>>> v = ['z' , 'b' , 'c' , 'd' , 'f' , 'z' , 'g' , 'z', 'd']关于这方面有很多问题,来自Matlab的人想要做相当于逻辑索引的工作,但主要是为了选择元素,而不是像我想做的那样在内部修改它们。为了修改过滤的元素,我想做相当于逻辑索引的操作。
我刚刚发现,我也不能为Python列表提供多个索引。我正在使用Python 3。
>>> v[ [1,3] ] = 'z'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not list
>>> v[ 1:3 ] = 'z'
>>> v
['a', 'z', 'd', 'f', 'k', 'g', 'a', 'd']filter为我提供了实际对象的可迭代性,但我不知道如何修改它们指向的元素。
>>> v = ['a' , 'b' , 'c' , 'd' , 'f' , 'k' , 'g' , 'a', 'd']
>>> t = ['a', 'k']
>>> p = filter(lambda x: x in t, v)
>>>
>>> for elem in p :
... print(elem)
...
a
k
a
>>>
>>> for elem in p :
... p = 'z'
...
>>>
>>> for elem in p :
... print(elem)
...
>>>https://stackoverflow.com/questions/32000385
复制相似问题