Найти - Пользователи
Полная версия: Удаление элементов списка по условию
Начало » Python для новичков » Удаление элементов списка по условию
1
Nastya99
Здравствуйте, помогите, пожалуйста, проблема с удалением элементов
Задание: определить индексы элементов списка, значения которых принадлежат заданному диапазону (т.е. не меньше заданного минимума и не больше заданного максимума) и после того, как элемент с подходящим значением добавлен в новый список – удалять его из исходного списка. Использовать цикл 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)	
vic57
удалять из списка по индексу в цикле надо с конца списка
 >> 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]
>>> 
Nastya99
vic57 большое спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB