【问题标题】:How to merge two list of strings with multiple character replacements如何合并具有多个字符替换的两个字符串列表
【发布时间】:2019-07-31 15:26:35
【问题描述】:

我有两个字符串列表。

A = ['HKO', 'HKO', 'HKO'] 
B = ['12M', 'M4M', 'MKO']

我想合并它们,结果是:

C = ['HKM', 'MKM', 'MKO']

也就是说,如果列表B中有'M',我想保留它,否则我想用A的那个索引中的值替换它。

最好的方法是什么?我一直遇到的问题是 B 的'M4M',因此我无法同时替换'H''O'。例如我会得到:

['HKM', 'MKO', 'HKM'] 

谢谢。 (我目前的代码如下!)

replace_list = [(0, 2), (1, 0), (1, 2), (2, 0)]

list = []
for i in range(len(mix_list)):
    for j in range(len(letters)):
        if j != replace_list[i][1]:
            list.append(letters[i][j])
        else:
            list.append('M')
    list_join = ("".join(list))

    print list
print "join", list_join

我在哪里得到:加入 HKMMKOHKM

【问题讨论】:

  • 欢迎来到 Stack Overflow! StackOverflow 不是免费的编码服务。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 显示您得到错误答案的代码,我们会帮助您修复它。
  • 听起来您只是没有正确索引所有字符串字符。不要错误地使用string.index('M'),因为那只会找到第一次出现。
  • mix_listletters 是什么? replace_list 如何适应这个?
  • 原始问题没有提到元组列表,只是两个字符串列表。

标签: python string list loops replace


【解决方案1】:

您可以使用zipstr.join

A = ['HKO', 'HKO', 'HKO'] 
B = ['12M', 'M4M', 'MKO']
result = [''.join(d if d == 'M' else c for c, d in zip(a, b)) for a, b in zip(A, B)]

输出:

['HKM', 'MKM', 'MKO']

【讨论】:

    【解决方案2】:

    玩弄zips 和maps

    f = lambda s: ''.join([a if b !='M' else b for a, b in s])
    list(map(f, (map(lambda k: zip(*k), zip(A,B)))))
    

    输出

    ['HKM', 'MKM', 'MKO']
    

    【讨论】:

      【解决方案3】:

      您可以将函数map()与辅助函数func()一起使用:

      A = ['HKO', 'HKO', 'HKO']
      B = ['12M', 'M4M', 'MKO']
      
      def func(a, b):
          if 'M' in b:
              m = map(lambda x, y:
                  y if y == 'M' else x, a, b)
              return ''.join(m)
          else:
              return a
      
      list(map(func, A, B))
      # ['HKM', 'MKM', 'MKO']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-11
        • 2016-08-22
        • 1970-01-01
        • 2015-03-07
        • 2011-09-01
        • 2015-03-15
        • 2016-10-26
        • 1970-01-01
        相关资源
        最近更新 更多