'聚集'Python中的列表 - python

我一直在尝试“聚集”列表

我的意思是根据它们之间的项目将项目放在一起,因此当“聚集”在任何['d','-','g','p','q','-','a','v','i']周围时,['d-g','p','q-a','v','i']变为'-'
这是我的尝试:

def clump(List):
    box = []
    for item in List:
        try:
            if List[List.index(item) + 1] == "-":
                box.append("".join(List[List.index(item):List.index(item)+3]))
            else:
                box.append(item)

        except:
            pass

    return box

但是,它输出(对于上面的示例)

['d-g', '-', 'g', 'p', 'q-a', '-', 'a', 'v']

由于我不知道如何跳过接下来的两项

另外,代码是一团糟,主要是由于try和except语句(我使用它,否则当到达最后一项时会得到IndexError)

如何解决(或完全重写)?

谢谢

参考方案

这是一个O(n)解决方案,该解决方案维护一个标志来确定您当前是否聚集。然后,它根据以下条件处理列表中的最后一项:

def clump(arr):
     started = False
     out = []
     for item in arr:
         if item == '-':
             started = True
             out[-1] += item
         elif started:
             out[-1] += item
             started = False
         else:
              out.append(item)
     return out

实际上:

In [53]: clump(x)
Out[53]: ['d-g', 'p', 'q-a', 'v', 'i']

如果列表中的第一项是破折号,则此解决方案将失败,但看起来它应该是无效的输入。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

单行的'if'/'for'语句是否使用Python样式好? - python

我经常在这里看到某人的代码,看起来像是“单线”,这是一条单行语句,以传统的“if”语句或“for”循环的标准方式执行。我在Google周围搜索,无法真正找到可以执行的搜索类型?任何人都可以提出建议并最好举一些例子吗?例如,我可以一行执行此操作吗?example = "example" if "exam" in exam…