【问题标题】:Remove multiple elements from string by index in Python在Python中按索引从字符串中删除多个元素
【发布时间】:2019-05-06 01:43:12
【问题描述】:

我有一个字符串和该字符串中每个位置的相关分数列表。如何删除该字符串中低于某个阈值的所有元素?

我可以创建使用列表中介的解决方法,并且我已经看到了解决 this problem one element at a time 的答案,但我还没有看到任何可以直接按位置删除多个元素的方法。一次做一个的主要问题是会改变剩余元素的位置。

>>> import string
>>> import numpy as np

>>> sequence = ''.join(np.random.choice(list(string.ascii_uppercase), 10))
>>> sequence
'BQJVESXZBW'
>>> scores = np.random.uniform(size=10)
>>> scores
[0.99023134, 0.21286886, 0.10760723, 0.50485956, 0.207736, 0.76909266, 0.62174588, 0.89416775, 0.60837875, 0.32754857]
>>> threshhold = 0.50

输出应该删除第二个、第三个、第五个和第十个元素,留下'BVSXZB'

【问题讨论】:

    标签: python string python-2.7


    【解决方案1】:

    这是一种方法:

    In [11]: scores
    Out[11]: 
    array([0.00397126, 0.88897497, 0.06103467, 0.27202612, 0.50436342,
           0.09516024, 0.92886696, 0.24499752, 0.40425165, 0.90589889])
    
    In [12]: ''.join(ch for (ch, score) in zip(sequence, scores) if score >= threshold)
    Out[12]: 'BFHC'
    

    【讨论】:

    • 这是编写我想出的解决方案的一种单行方式(更优雅,所以谢谢!),但我真正感兴趣的是是否有类似于得到的方式来自列表、数组或 DataFrame 的元素,例如 mylist[[0, 64, 19]]mylist[[True, True, False, True, False]]
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2013-10-27
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多