【问题标题】:How to join values of map in python?如何在python中加入地图的值?
【发布时间】:2021-03-27 17:27:44
【问题描述】:

这是一个用于模式匹配问题的 .py 文件:

import sys
def pattern_matching(pattern,genome):
    loc = []
    for i in range(len(genome) - len(pattern) + 1):
        if  pattern == genome[i:i+len(pattern)]:
            loc.append(i)
    return loc
if __name__ == '__main__':
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        with open(filename) as f:
            lines = f.read().splitlines()
        pattern = lines[0]
        genome = lines[1]
    else:
        pattern = 'ATAT'
        genome = 'GATATATGCATATACTT'
    loc = pattern_matching(pattern,genome)
  print ",".join(map(str,loc))

但它在第 22 行显示了一个名为“SyntaxError: invalid syntax”的错误。如何打印结果?

【问题讨论】:

  • 问题可能是您对第 22 行的缩进不正确,或者根据您的版本,它是未封装的 print 语句
  • @ChrisCharley 不会抛出 Syntax 错误,如果是这样的话,无论如何,map 需要一个可迭代的
  • print成为python3.x中的一个函数,你必须像这样使用它:print(xxx)

标签: python python-3.x python-2.7 pattern-matching python-module


【解决方案1】:

修复Unexpected Unindenting 并封装print() 语句(如果您使用的是> python3 版本)

import sys
def pattern_matching(pattern,genome):
    loc = []
    for i in range(len(genome) - len(pattern) + 1):
        if  pattern == genome[i:i+len(pattern)]:
            loc.append(i)
    return loc
if __name__ == '__main__':
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        with open(filename) as f:
            lines = f.read().splitlines()
        pattern = lines[0]
        genome = lines[1]
    else:
        pattern = 'ATAT'
        genome = 'GATATATGCATATACTT'
    loc = pattern_matching(pattern,genome)
    print(",".join(map(str,loc))) # Corrected unindent and encapsulated print

【讨论】:

    【解决方案2】:

    转换成列表就可以了。

     print(",".join(list(map(str,loc))))
    

    在python2.x中,map函数返回一个列表,在python3.x中返回一个map对象,所以你需要将map函数的返回转换为一个列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多