докер-композитор застрял на здании

Я знаю, что на эту тему есть много правильных решений, но я решил добавить несколько интересных способов решения этой проблемы. Если вы пришли из C ++ / C # или Java, вы будете использовать что-то вроде сравнения, а затем действия, используя индекс, чтобы удалить ненужную запись в цикле for. У Python есть функции Remove и Del. Функция удаления использует значение, а del использует индекс. Питоновское решение находится в последней функции. Давайте посмотрим, как мы можем это сделать:

Здесь мы используем индекс в цикле for и del, очень похожий в C ++:

def remove_vol(str1):
     #list2 = list1 # this won't work bc list1 is the same as list2 meaning same container#
    list1 = list(str1)
    list2 = list(str1)
    for i in range(len(list1)):
        if list1[i] in volwes:
            vol = list1[i]
            x = list2.index(vol)
            del list2[x]
    print(list2)

Используя функцию remove:

def remove_vol(str1): 
      list1 = list(str1)
      list2 = list(str1)
      for i in list1:
          if i in volwes:
              list2.remove(i)
      print(list2)

Построение новой строки, которая не содержит нежелательных символов, используя их индексы:

def remove_vol(str1):  
    list1 = list(str1)
    clean_str = ''
    for i in range(len(list1)):
        if list1[i] not in volwes:
            clean_str += ''.join(list1[i])
    print(clean_str)

То же, что и в решении выше, но с использованием значения:

def remove_vol(str1):
    list1 = list(str1)
    clean_str = ''
    for i in list1:
        if i not in volwes:
            clean_str += ''.join(i)
    print(clean_str)

Как вам это сделать в python? Воспользоваться списком! Это красиво:

def remove_vol(list1):
    clean_str = ''.join([x for x in list1 if x.lower() not in volwes])
    print(clean_str)
0
задан Noah Lc 5 March 2019 в 16:14
поделиться