TypeError: ne peut affecter un objet iterable - Valeurs de la liste
Pouvez-vous sugggest un moyen d'appliquer la valeur d'une variable à une liste à partir de l'élément 6 de fin définie par une variable?
Peut-être que mon code s'expliquer mieux (Python 3)
#get user input as to size of range
range_size = 0
if range_size == 0:
try:
range_size = int(input('Size of Range?: '))
except ValueError:
print('That was not an integer!')
range_size = 0
#set base value for each number in range_size
base_value = int(100 / range_size)
print(base_value)
#create list of base values
num_weighted = [base_value] * range_size
num_weighted[0] = round(base_value * 1.8, 1)
num_weighted[1] = round(base_value * 1.6, 1)
num_weighted[2] = round(base_value * 1.5, 1)
num_weighted[3] = round(base_value * 1.3, 1)
num_weighted[4] = round(base_value * 1.15, 1)
num_weighted[5] = round(base_value * 1.1, 1)
print(num_weighted)
# redistribute the difference of the sum top 6 and 100, apply to rest of range
top6 = (sum(num_weighted[0:6]))
not_top6 = range_size - 6
pts_alloc = round((100 - top6) / not_top6, 1)
print(pts_alloc)
#attempt 1
num_weighted[6:] = pts_alloc
#attempt 2
#num_weighted[6:(range_size + 1)] = pts_alloc
#attempt 3
#s = slice(6, not_top6)
#num_weighted[s] = pts_alloc
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une liste de
pts_alloc
et l'affecter à la tranche comme cenum_weighted[6:] = [pts_alloc]*(len(num_weighted)-6)
Utilisation
list.append()
:Vous ne pouvez affecter un objet iterable à une tranche; quelque chose avec 0 ou plusieurs valeurs, et non pas une valeur spécifique.
Je n'avais pas de pré-construction de la liste, puis remplacer tout; il suffit de faire:
et étendre la liste avec
pts_alloc
à l'aide delist.extend()
avec un générateur:Vous disposez maintenant d'une liste de longueur
range_size
.pts_alloc
est un numéro unique, auquel cas.append()
est la bonne façon d'ajouter que la seule valeur de la liste.