No meu programa, o usuário digita o número n
e, em seguida, o n
número de seqüências de caracteres, que são armazenadas em uma lista.
Preciso codificar para que, se um determinado índice de lista existir, execute uma função.
Isso se torna mais complicado pelo fato de eu ter aninhado declarações if len(my_list)
.
Aqui está uma versão simplificada do que tenho agora, que não está funcionando:
n = input ("Define number of actors: ")
count = 0
nams = []
while count < n:
count = count + 1
print "Define name for actor ", count, ":"
name = raw_input ()
nams.append(name)
if nams[2]: #I am trying to say 'if nams[2] exists, do something depending on len(nams)
if len(nams) > 3:
do_something
if len(nams) > 4
do_something_else
if nams[3]: #etc.
python
python-2.7
user1569317
fonte
fonte
n
como um número inteiro, não como uma lista. Estou confuso.n
, em vez denams
nosif
slen
a lista é pelo menos um determinado valor?Respostas:
Poderia ser mais útil você usar o comprimento da lista
len(n)
para informar sua decisão, em vez de verificarn[i]
cada comprimento possível?fonte
Preciso codificar para que, se um determinado índice de lista existir, execute uma função.
Este é o uso perfeito para um bloco try :
No entanto, por definição, todos os itens em uma lista Python entre
0
elen(the_list)-1
existem (ou seja, não há necessidade de uma tentativa, exceto se você souber0 <= index < len(the_list)
).Você pode usar enumerar se desejar os índices entre 0 e o último elemento:
Se você está procurando algum pensamento definido de "índice", acho que está fazendo a pergunta errada. Talvez você deva considerar o uso de um contêiner de mapeamento (como um dict) versus um contêiner de sequência (como uma lista). Você pode reescrever seu código assim:
Executa assim:
Você também pode usar o método .get em vez de tentar / exceto para uma versão mais curta:
fonte
try
não não dizer se existe o índice apenas se for fetchable - take-1
- que o índice realmente não existe , mas um valor seria devolvido.len(nams)
deve ser igual aon
seu código. Todos os índices0 <= i < n
"existem".fonte
Isso pode ser feito simplesmente usando o seguinte código:
fonte
Você já sabe como testar isso e, de fato, já está realizando esses testes no seu código .
Os índices válidos para uma lista de comprimento
n
são0
atravésn-1
inclusiva.Assim, uma lista possui um índice
i
se, e somente se, o comprimento da lista for pelo menosi + 1
.fonte
Usar o comprimento da lista seria a solução mais rápida para verificar se existe um índice:
Isso também testa índices negativos e a maioria dos tipos de sequência (como
ranges
estr
s) que têm um comprimento.Se você precisar acessar o item nesse índice posteriormente, é mais fácil pedir perdão do que permissão , e também é mais rápido e mais Pythonic. Use
try: except:
.Isso seria o contrário de:
fonte
Se você deseja iterar os dados dos atores inseridos:
fonte
ok, então eu acho que é realmente possível (por uma questão de argumento):
fonte
3 in range(len(your_list)
3 in xrange(len(your_list)
- provavelmente não pode fazer melhor do que esteVocê pode tentar algo assim
fonte
Oneliner:
Exemplo completo:
Apenas para informação. Imho,
try ... except IndexError
é a melhor solução.fonte
Não deixe espaço na frente dos seus suportes.
Exemplo:
Dica: você deve adicionar comentários acima e / ou abaixo do seu código. Não está por trás do seu código.
Tenha um bom dia.
fonte
Muitas respostas, não a simples.
Para verificar se um índice 'id' existe no dicionário dict:
retorna true se 'idade' existir.
fonte