首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原始python列表中元素子集的内部修改

原始python列表中元素子集的内部修改
EN

Stack Overflow用户
提问于 2015-08-14 00:06:45
回答 4查看 377关注 0票数 2

我知道列表理解是如何擅长返回列表子集,甚至是在没有设置条件的情况下进行全面的重构。但是,筛选条件将返回列表中可能小于筛选列表的值。如何获得返回值的位置并有条件地更改这些元素?

以下是一个简单的例子,

代码语言:javascript
复制
>>> v = ['a' , 'b' , 'c' , 'd' , 'f' , 'k' , 'g' , 'a', 'd']
>>> t = ['a', 'k']

我如何修改vt中的元素,以映射到新的值,比如'z',以产生类似的结果

代码语言:javascript
复制
>>> v = ['z' , 'b' , 'c' , 'd' , 'f' , 'z' , 'g' , 'z', 'd']

关于这方面有很多问题,来自Matlab的人想要做相当于逻辑索引的工作,但主要是为了选择元素,而不是像我想做的那样在内部修改它们。为了修改过滤的元素,我想做相当于逻辑索引的操作。

我刚刚发现,我也不能为Python列表提供多个索引。我正在使用Python 3。

代码语言:javascript
复制
>>> 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为我提供了实际对象的可迭代性,但我不知道如何修改它们指向的元素。

代码语言:javascript
复制
>>> 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)
...
>>>
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32000385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档