Различные способы очистить списки

Заменить

<h2 key={movie.toString()}>{movie.title}</h2>

на

<h2 key={movie.id}>{movie.title}</h2>

Объяснение:

React ожидает уникальный ключ для каждой строки в виде списка составная часть. Он использует этот ключ, чтобы определить, что изменилось с момента последнего рендеринга. В противном случае это может быть неоднозначным, как список изменился.

movie.toString() не был уникальным. Он был оценен в "[object Object]" для каждой строки.


Глядя на API, который вы вызываете, вам, возможно, придется сделать что-то более похожее на это:

<h2 key={movie.event.id}>{movie.event.title}</h2>
197
задан martineau 8 April 2017 в 13:14
поделиться

3 ответа

Очистка списка на месте повлияет на все другие ссылки в том же списке.

Например, этот метод не влияет на другие ссылки:

>>> a = [1, 2, 3]
>>> b = a
>>> a = []
>>> print(a)
[]
>>> print(b)
[1, 2, 3]

Но этот:

>>> a = [1, 2, 3]
>>> b = a
>>> del a[:]      # equivalent to   del a[0:len(a)]
>>> print(a)
[]
>>> print(b)
[]
>>> a is b
True

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

>>> a[:] = []
348
ответ дан 23 November 2019 в 05:15
поделиться

Мне кажется, что del вернет вам память, тогда как назначение нового списка приведет к удалению старого только при запуске gc. имеет значение.

Это может быть полезно для больших списков, но для небольшого списка им следует пренебречь.

Править : Как Алгориас, это не имеет значения.

Обратите внимание, что

del old_list[ 0:len(old_list) ]

эквивалентно

del old_list[:]
13
ответ дан 23 November 2019 в 05:15
поделиться

Есть два случая, в которых вы можете захотеть очистить список:

  1. Вы хотите использовать имя old_list далее в своем коде;
  2. Вы хотите, чтобы старый список был собран сборщиком мусора как можно скорее, чтобы освободить память;

В случае 1 вы просто продолжаете выполнять задание:

    old_list = []    # or whatever you want it to be equal to

В случае 2 оператор del уменьшит счетчик ссылок на объект списка с именем старый список указывает на. Если на объект списка указывает только имя old_list at, счетчик ссылок будет равен 0, и объект будет освобожден для сборки мусора.

    del old_list
5
ответ дан 23 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: