Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列表元素小于阈值,是否尝试删除它?_Python_List - Fatal编程技术网

Python 如果列表元素小于阈值,是否尝试删除它?

Python 如果列表元素小于阈值,是否尝试删除它?,python,list,Python,List,我有一份清单: lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa'] 我想看看50%到60%的列表索引是否由“a”组成。如果没有,则应删除索引 以下是我得到的: def remove_stuff(sequences, min_c, max_c): seq = cleanUp(display(sequences)) # used from another function that makes the list for i i

我有一份清单:

lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa']
我想看看50%到60%的列表索引是否由“a”组成。如果没有,则应删除索引

以下是我得到的:

def remove_stuff(sequences, min_c, max_c):
   seq = cleanUp(display(sequences))   # used from another function that makes the list
   for i in seq:
        a = 'a'
        a_find = int(seq.count(a))
        length_seq = int(len(seq))
        average = ((a_find) / length_seq) * 100
        if average < min_c:
            seq.remove(i)
        elif average > max_c:
            seq.remove(i)
         else:
             pass
我怎样才能得到新的修改列表


谢谢你的帮助

您可以使用过滤器:

In [2]: lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa']

In [3]: lst = [i for i in lst if 0.5<i.count('a')/len(i)<0.6]

In [4]: lst
Out[4]: ['aaaaabbbbb']
def condition_a(elem):
    count_of_a = elem.count('a')
    rate_of_a = count_of_a / len(elem)
    return 0.5 <= rate_of_a <= 0.6

lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa']
list(filter(condition_a, lst))

您可以使用过滤器:

def condition_a(elem):
    count_of_a = elem.count('a')
    rate_of_a = count_of_a / len(elem)
    return 0.5 <= rate_of_a <= 0.6

lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa']
list(filter(condition_a, lst))

您可以定义一个基于条件谓词保留元素的方法:

def keep_if(predicate, iterable):
  for element in iterable:
    if predicate(element):
      yield element
然后定义测试条件的方法:

def is_between_50_60_percent(letter, string):
  perc = string.count(letter) / len(string)
  return perc >= 0.5 and perc <= 0.6
最后你可以打电话:


您可以定义一个基于条件谓词保留元素的方法:

def keep_if(predicate, iterable):
  for element in iterable:
    if predicate(element):
      yield element
然后定义测试条件的方法:

def is_between_50_60_percent(letter, string):
  perc = string.count(letter) / len(string)
  return perc >= 0.5 and perc <= 0.6
最后你可以打电话:


忘了这一点,让我来澄清一下:您需要:a从现有列表中删除项目,或b使用筛选值创建新列表是可以的,因此,让我来编辑请澄清:您需要:a从现有列表中删除项目,或b使用筛选值创建新列表是可以的。注意,您正在创建新列表,并且OP写道:“应删除索引”我使用新列表重新初始化列表。@AlexYu:检查编辑的问题。OP想要一份新的名单。当然,您可以指定相同的name@Bazingaa我不清楚OP对新的修改列表意味着什么——它是新的吗?如果是,为什么要修改?请注意,您正在创建新列表,OP写道:“应该删除索引”我用新列表重新初始化列表。@AlexYu:检查编辑过的问题。OP想要一份新的名单。当然,您可以指定相同的name@Bazingaa我不清楚OP对新的修改列表意味着什么——它是新的吗?如果是,为什么要修改?
res = keep_if( lambda x: is_between_50_60_percent('a', x), lst)
print(list(res)) #=> ['aaaaabbbbb']