Хранить в списке только те, у которых есть разделитель

#python

#python

Вопрос:

У меня есть список, который называется mylist

и данные имеют этот формат

 [['machine/learning', 'machine'], ['learning', 'machine/learning']]
  

Как можно сохранить в списке только токены, внутри которых есть этот символ '/'

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

 [['machine//////////learning'], ['machine//////////learning']]
  

Ответ №1:

Вы можете сделать это с помощью пары вложенных списков:

 myList = [['machine//////////learning', 'machine'], ['learning', 'machine//////////learning']]
check = '//////////'

myList = [[y for y in x if check in y] for x in myList]

print(myList)
  

Результат:

 [['machine//////////learning'], ['machine//////////learning']]
  

Ответ №2:

Я не знаю, хотите ли вы те, у которых есть один ‘/’ или набор косых черт ‘///////’ вместе.

Но вы можете выполнить цикл по списку и проверить, имеет ли каждое значение разделитель или нет, и добавить его в новый список.

Что-то вроде этого:

 list = [['machine//////////learning', 'machine'], ['learning','machine//////////learning']]
newlist = []
for inner_list in list:
    for l in inner_list:
        if ('//////////' in l):
            newlist.append(l)
print(newlist) #should be the ones with '//////////'
  

Это могло бы быть лучше, но в этом есть идея.

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

1. Ответ @Steve более аккуратный.

Ответ №3:

Наиболее читаемым способом было бы использовать python filter amp; map functionality

 def valid(s):
    return '//////////' in s

def filter_valid(l):
    return list(filter(valid, l))    

filtered = list(map(filter_valid, my_list))

  

Он также может быть записан как однострочный, если хотите:

 list(map(lambda l: list(filter(lambda s: key in s, l)), my_list))
  

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

1. Почему вы говорите «лучший»? Что делает этот метод лучше других? Кажется, что главное, что делает ваше решение, — это занимает больше места, чем мое на кодовой странице.

2. Он оптимизирован для удобства чтения — директивы reduce map обычно используются во многих языках и очень хорошо описывают выполняемую операцию