2024-04-19 22:57:56 发布
网友
将列表中的一项替换为两项的最简单方法是什么?在
所以:
list=['t' , 'r', 'g', 'h', 'k']
如果我想用“a”和“b”代替“r”:
这里有一个非常复杂的方法,在每次出现“r”时都进行拼接。只是为了好玩。在
>>> l = ['t', 'r', 'g', 'h', 'r', 'k', 'r'] >>> reduce(lambda p,v: p + list('ab' if v=='r' else v), l, []) ['t', 'a', 'b', 'g', 'h', 'a', 'b', 'k', 'a', 'b']
现在投票选出一个更具可读性的答案。:)
如果list包含一个以上的'r',那么您可以使用列表理解或带有生成器的itertools.chain.from_iterable表达。但是,如果列表只包含一个这样的项,那么对于@arshajii的解决方案。在
'r'
itertools.chain.from_iterable
>>> lis = ['t' , 'r', 'g', 'h', 'k'] >>> [y for x in lis for y in ([x] if x != 'r' else ['a', 'b'])] ['t', 'a', 'b', 'g', 'h', 'k']
或者:
使用切片分配可以很容易地完成:
>>> l = ['t' , 'r', 'g', 'h', 'k'] >>> >>> pos = l.index('r') >>> l[pos:pos+1] = ('a', 'b') >>> >>> l ['t', 'a', 'b', 'g', 'h', 'k']
另外,不要调用变量list,因为该名称已被内置函数使用。在
list
这里有一个非常复杂的方法,在每次出现“r”时都进行拼接。只是为了好玩。在
现在投票选出一个更具可读性的答案。:)
如果list包含一个以上的
'r'
,那么您可以使用列表理解或带有生成器的itertools.chain.from_iterable
表达。但是,如果列表只包含一个这样的项,那么对于@arshajii的解决方案。在或者:
^{pr2}$使用切片分配可以很容易地完成:
另外,不要调用变量
list
,因为该名称已被内置函数使用。在相关问题 更多 >
编程相关推荐