替换嵌套数组和列表元组中的项

时间:2014-05-10 17:40:08

标签: python arrays python-3.x tuples

大家好日子。

我一直在寻找替换数组中项目的方法。

基本上我有一个带嵌套列表的数组,如下所示:

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)引起的,但它们是所需数组的关键部分。

我花了好几个小时寻找方法,我非常感谢任何正确方向的暗示。

感谢您的帮助!

2 个答案:

答案 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)