大家好日子。
我一直在寻找替换数组中项目的方法。
基本上我有一个带嵌套列表的数组,如下所示:
array = [ ('a', 'a'), 'c', ('c', 'a'), 'g', 'g', ('h', 'a'), 'a']
现在我正在寻找一种方法来取代' a'与' z'。
我正在跳跃使用以下代码行来实现:
new_array = [w.replace('a', 'z') for w in array]
new_array = [ ('z', 'z'), 'c', ('c', 'z'), 'g', 'g', ('h', 'z'), 'a']
然而,不幸的是,我收到了以下错误:
属性错误:'元组'对象没有属性'替换'
我理解主要问题是由使用元组(a,x)引起的,但它们是所需数组的关键部分。
我花了好几个小时寻找方法,我非常感谢任何正确方向的暗示。
感谢您的帮助!
答案 0 :(得分:3)
def replace(value, find, rep):
if isinstance(value, tuple):
return tuple(rep if val==find else val for val in value)
return value
new_array = [replace(val, 'a', 'z') for val in array]
最后一个)应该是]。
答案 1 :(得分:2)
array = [ ('a', 'a'), 'c', ('c', 'a'), 'g', 'g', ('h', 'a'), 'a']
map(lambda l: tuple(i if i != 'a' else 'z' for i in l) if isinstance(l, tuple) else l, array)