Стереть весь массив Python - PullRequest
       5

Стереть весь массив Python

38 голосов
/ 17 августа 2010

Как стереть весь массив, оставив его без элементов?

Я хочу сделать это, чтобы в нем можно было хранить новые значения (новый набор из 100 чисел с плавающей запятой) и находить минимум.

Прямо сейчас моя программа читает минимум из наборов, прежде чем я думаю, потому что она добавляет себя с предыдущим набором, все еще там.Кстати, я использую .append.

Ответы [ 4 ]

48 голосов
/ 17 августа 2010

Обратите внимание, что list и array являются различными классами. Вы можете сделать:

del mylist[:]

Это фактически изменит ваш существующий список. Ответ Дэвида создает новый список и присваивает его той же переменной. То, что вы хотите, зависит от ситуации (например, есть ли у какой-либо другой переменной ссылка на тот же список?).

Попробуйте:

a = [1,2]
b = a
a = []

и

a = [1,2]
b = a
del a[:]

Печатайте a и b каждый раз, чтобы увидеть разницу.

28 голосов
/ 17 августа 2010

Все просто:

array = []

установит array в пустой список. (Кстати, в Python они называются списками, а не массивами)

Если это не сработает, отредактируйте ваш вопрос, включив в него пример кода, демонстрирующий вашу проблему.

5 голосов
/ 17 августа 2010

Ну да, массивы действительно существуют, и нет, они не отличаются от списков, когда речь идет о таких вещах, как 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]

1 голос
/ 17 августа 2010

Теперь, чтобы ответить на вопрос, который, возможно, вам следовало бы задать, например: «Я получаю где-то 100 чисел с плавающей запятой; мне нужно поместить их в массив или список, прежде чем я найду минимум?»

Ответ: Нет, если somewhere является итеративным, вместо этого:

temp = []
for x in somewhere:
   temp.append(x)
answer = min(temp)

Вы можете сделать это:

answer = min(somewhere)

Пример:

answer = min(float(line) for line in open('floats.txt'))
...