Как стереть весь массив, не оставляя элементов?
Я хочу сделать это, чтобы сохранить в нем новые значения (новый набор из 100 плавает) и найдите минимум.
Прямо сейчас моя программа читает минимум из наборов, прежде чем я думаю, потому что она добавляет себя с предыдущим набором, все еще там. Я использую .append, кстати.
Обратите внимание, что list
и array
- это разные классы. Вы можете сделать:
del mylist[:]
Это фактически изменит ваш существующий список. Ответ Дэвида создает новый список и присваивает его той же переменной. Что вы хотите, зависит от ситуации (например, имеет ли какая-либо другая переменная ссылку на тот же список?).
Попробуйте:
a = [1,2]
b = a
a = []
и
a = [1,2]
b = a
del a[:]
Выведите a
и b
каждый раз, чтобы увидеть разницу.
Да, массивы существуют, и нет, они не отличаются от списков, когда дело доходит до таких вещей, как del
и append
:
>>> from array import array
>>> foo = array('i', range(5))
>>> foo
array('i', [0, 1, 2, 3, 4])
>>> del foo[:]
>>> foo
array('i')
>>> foo.append(42)
>>> foo
array('i', [42])
>>>
Различия, которые стоит отметить: вам нужно указать тип при создании массива, и вы экономите хранилище за счет дополнительного времени на преобразование между типом C и типом Python, когда вы делаете arr[i] = expression
или arr. append(expression)
, и lvalue = arr[i]
Это просто:
array = []
установит array
как пустой список. (Между прочим, в Python они называются списками, а не массивами)
Если это не сработает для вас, отредактируйте свой вопрос, включив в него образец кода, демонстрирующий вашу проблему.
Теперь, чтобы ответить на вопрос, который, возможно, вам следовало задать, например: «Я где-то получаю 100 чисел с плавающей запятой; нужно ли мне помещать их в массив или список, прежде чем я найду минимум?»
Ответ: Нет , если где-то
повторяется, вместо этого:
temp = []
for x in somewhere:
temp.append(x)
answer = min(temp)
вы можете сделать это:
answer = min(somewhere)
Пример:
answer = min(float(line) for line in open('floats.txt'))