Форум сайта python.su
0
Здравствуйте, помогите, пожалуйста, проблема с удалением элементов
Задание: определить индексы элементов списка, значения которых принадлежат заданному диапазону (т.е. не меньше заданного минимума и не больше заданного максимума) и после того, как элемент с подходящим значением добавлен в новый список – удалять его из исходного списка. Использовать цикл while , функцию len()
import random arr = [] for i in range(20): x = int(random.random()*10) arr.append(x) print("%3d" % x, end='') if (i+1) % 10 == 0: print() minimum = int(input('min: ')) maximum = int(input('max: ')) index = [] i = 0 for i in arr: if minimum <= i <= maximum: index.append(arr.index(i)) print("Количество: ", len(index)) print("Индексы: ", index) b=[] while i < len(arr): if 0 <= i <= 3: b.append(arr[i]) del arr[i] else: i += 1 print(b) print("Обновлённый список", arr)
Офлайн
удалять из списка по индексу в цикле надо с конца списка
>> from random import random >>> arr = [random()*10 for i in range(20)] >>> maximum = 3 >>> minimum = 1 >>> idx = [] >>> for i in range(len(arr)): if minimum <= arr[i] <= maximum: idx.append(i) >>> b = [] >>> for i in idx[::-1]: b.append(arr.pop(i)) >>> arr [0.9997039496185745, 9.81926025788244, 9.477564320403783, 7.450097326783579, 6.094295705798772, 7.734353608549047, 8.333309706804087, 7.21116767923487, 9.380447222892135, 5.827521089174189, 3.5512566930962883, 6.3334419066820065, 4.7993305481483715, 9.726051881867546] >>> b [2.0952664916873065, 2.6867601021370313, 1.0712025352806398, 2.435998309532165, 1.5388566029618522, 1.1291303356074822] >>>
Отредактировано vic57 (Окт. 20, 2018 15:13:12)
Офлайн
0
vic57 большое спасибо
Офлайн