Удаление третьего элемента из списка до тех пор, пока не будет менее 3 номеров - PullRequest
0 голосов
/ 09 мая 2019

У меня проблема.Мне нужно создать список.И в каждой итерации мне нужно удалить третий элемент и распечатать список без удаленного элемента.

Дело в том.Я пытаюсь сделать алгоритм удаления третьего элемента без функции удаления или других встроенных функций списка.В моем коде я рассмотрел следующие возможности.Если в моем списке менее 3 элементов, я печатаю сообщение о том, что список короткий.Если в моем списке 3 элемента, я назначу третьему элементу значение второго элемента и так далее.Моя проблема в том, что в моем списке более 3 элементов.

v=[]   # list of numbers the user inputs
two=[] #list with only 2 elements
vector=[] # list with third element deleted when len(v)>3

def create_array():
    n=int(input('Digit total elements in dynamic array - '))
    for i in range(0,n):
        element=int(input('Digit element to array - '))
        v.append(element)
    return v
print(create_array())

def remove_third_element():
    for j in range(0,len(v)):
        if len(v)<3:  # if number of elements in list < 3 there is no element to delete
            print('There is no element do delete! ')
            return 0
        elif len(v)==3:
            v[2]==v[1] and v[1]==v[0]
            two=[v[0],v[1]]
            return two
        else:
            v[0]==v[1] and v[1]==v[2]

print(remove_third_element())

Ответы [ 4 ]

1 голос
/ 09 мая 2019

Вот Pythonic способ создания нового списка без третьего элемента исходного списка.

new_list = old_list[:2] + old_list[3:]

old_list[:2] - сокращение от «до 2-го индекса» (поэтому мы получим индекс 0и 1) из old_list.

old_list[3:] это сокращение от «от 3-го индекса до конца» (т. е. 3, 4 и т. д.).

Оба возвращаютсписки;в python, если вы добавляете списки, конкатенация действительно происходит.


Например, если old_list = [1,2,3,4,5], то new_list[:2] будет [1,2], а new_list[3:] будет [4,5].Так что объединение это будет [1,2,4,5].

1 голос
/ 09 мая 2019
elif len(v) > 3:
   ret = [];
   for i in range(len(v)):
      if(i != 2) ret.append(v[i]);
   return ret

должен сделать трюк

Кстати, с помощью этого метода вы можете удалить вас elif len (v) == 3

Также ваш код:

elif len(v)==3:
        v[2]==v[1] and v[1]==v[0]
        two=[v[0],v[1]]
        return two

не будет работать, потому что '==' используется как условие в python, поэтому он возвращает логическое значение, а не присваивает значение.перейти на

v[2] = v[1]
v[1] = v[0]

вместо

0 голосов
/ 09 мая 2019
def main():
    big_list = [ x for x in range(20) ]
    while len(big_list) > 3:
        big_list =  big_list[:2] +  big_list[3:]
    print(big_list)

0 голосов
/ 09 мая 2019

Обратите внимание, что этот оператор: v[2]==v[1] and v[1]==v[0] не будет присваивать значения! Операция == возвращает логическое значение.

Допустим, ваш v выглядит следующим образом: v = [1, 1, 3]. Тогда v[2]==v[1] and v[1]==v[0] дает вам результат: False and True, и это дает вам False. Вы можете проверить это, если напечатаете это print(v[2]==v[1] and v[1]==v[0]).

Если вы хотите присвоить значения, вы можете использовать выражение вроде этого: v[2], v[1] = v[1], v[0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...