ti-enxame.com

Em python como posso definir vários valores de uma lista para zero simultaneamente?

Conceitualmente, eu quero fazer:

arr[20:] = 0

onde arr é um list. Como posso fazer isso?

16
Robert Martin

Você pode fazer isso diretamente usando a atribuição de fatia.

arr[20:] = [0] * (len(arr) - 20)

Mas o caminho natural é apenas para iterar.

for i in xrange(20, len(arr)):
    arr[i] = 0
29
user97370

Aqui estão algumas opções:

Compreensão da lista

>>> a = [1]*50
>>> a = [aa if i < 20 else 0 for i,aa in enumerate(a)]
>>> a
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Atribuição de fatia de lista:

>>> a = [1]*50
>>> a[20:] = [0 for aa in a[20:]]
>>> a
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

CEP (* CEP):

>>> a = [1]*50
>>> a[20:] = Zip(*Zip(a[20:],itertools.repeat(0)))[1]
9
PaulMcG
arr.fill(0)

numpy.ndarray.fill () preencherá ndarray com valor escalar

1
wwwjjj

Se você usar a compreensão da lista, faça uma cópia da lista, para que haja desperdício de memória. Use a compreensão ou o fatiamento da lista para criar novas listas; use os ciclos para definir os itens da lista corretamente.

0
Pallapo

Você pode criar uma função que você passará a matriz para que zere a matriz. Eu não uso o Python há algum tempo, então não tentarei mostrar o código Python.. Nessa função, você poderia usar um for ou while loop para iterar através de cada valor e definir cada um igual a zero.

0
Stephen Oller