Как удалить 0,1% из списка?

#python #arrays #regex #list #tuples

Вопрос:

у меня есть следующий список

 data = [    '0.1%',
 'hello',
 'how are you guys',
  '0.1%',
  '1%',
 '0.1%',
  '1%', ]
 

я попробовал это :

 cell = float(data.rstrip("%"))
 

я хочу удалить 1% и 0,1%

ожидаемый результат:

     data = [ 'hello','how are you guys' ]    
 

Комментарии:

1. Итак, что вы пробовали? Это выглядит очень просто, если вы знаете, как работает цикл или как работает понимание списка. Вы уже проходили учебник по python.org?

2. [x for x in data if '%' not in x] ?

3. rstrip работает только с одной строкой, а не со списком строк. Вероятно, только у pandas.DataFrame вас могло получиться dataframe.str.rstrip('%') удалить его из всех элементов в таблице. В чистом Python для этого нужно использовать for -loop.

Ответ №1:

Вот, пожалуйста:

 new_list = [d for d in data if d not in ['0.1%', '1%']]
 

Ответ №2:

Если вы хотите использовать что-то более общее:

 result = []
for i in data:
    try:
        float(i.strip('%'))
    except:
        result.append(i)
 

выход:

 ['hello', 'how are you guys']
 

Ответ №3:

Это еще один хитрый способ сделать это!

 data = ['0.1%',
    'hello',
    'how are you guys',
    '0.1%',
    '1%',
    '0.1%',
    '1%', ]

unwanted = [0, 3, 4, 5, 6,]

for ele in sorted(unwanted, reverse=True):
    del data[ele]


print(data)