В моей программе пользователь вводит число n
, а затем вводит n
количество строк, которые сохраняются в списке.
Мне нужно написать такой код, чтобы, если существует определенный индекс списка, запустить функцию.
Это усложняется тем фактом, что я вложил операторы if about len(my_list)
.
Вот упрощенная версия того, что у меня сейчас, но не работает:
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
источник
источник
n
как целое число, а не как список. Я запутался.n
вместоnams
вif
сlen
список имеет по крайней мере определенное значение?Ответы:
Может ли вам быть более полезным использовать длину списка
len(n)
для обоснования своего решения, а не проверятьn[i]
каждую возможную длину?источник
Мне нужно написать такой код, чтобы, если существует определенный индекс списка, запустить функцию.
Это идеальное использование для блока try :
Однако по определению все элементы в списке Python между
0
иlen(the_list)-1
существуют (т. Е. Пытаться не нужно, кроме случаев, когда вы знаете0 <= index < len(the_list)
).Вы можете использовать enumerate, если хотите, чтобы индексы были между 0 и последним элементом:
Если вы ищете какую-то определенную «индексную» мысль, я думаю, вы задаете неправильный вопрос. Возможно, вам следует рассмотреть возможность использования контейнера сопоставления (например, dict) вместо контейнера последовательности (например, списка). Вы можете переписать свой код так:
Работает так:
Вы также можете использовать метод .get вместо try /, за исключением более короткой версии:
источник
try
ничего не сказать, если индекс существует только если это fetchable - взятие-1
- этот показатель на самом деле не существует , но значение будет возвращено.len(nams)
должно быть равноn
в вашем коде. Все индексы0 <= i < n
«существуют».источник
Это можно сделать, просто используя следующий код:
источник
Вы уже знаете, как это проверить, и фактически уже выполняете такие тесты в своем коде. .
Допустимые индексы для списка длины
n
проходят0
черезn-1
включительно.Таким образом, список имеет индекс
i
тогда и только тогда, когда длина списка не меньшеi + 1
.источник
Использование длины списка было бы самым быстрым решением для проверки существования индекса:
Это также проверяет наличие отрицательных индексов и большинства типов последовательностей (Like
ranges
иstr
s), которые имеют длину.Если вам все равно нужно получить доступ к элементу в этом индексе впоследствии, проще попросить прощения, чем разрешения , и это также быстрее и более Pythonic. Используйте
try: except:
.Это было бы в отличие от:
источник
Если вы хотите перебрать вставленные данные актеров:
источник
хорошо, поэтому я думаю, что это действительно возможно (ради аргумента):
источник
3 in range(len(your_list)
3 in xrange(len(your_list)
- вероятно, не может быть лучше, чем этоВы можете попробовать что-то вроде этого
источник
Один лайнер:
Полный пример:
Просто для информации. Имхо,
try ... except IndexError
это лучшее решение.источник
Не оставляйте места перед скобами.
Пример:
Совет: вы должны добавлять комментарии поверх кода и / или под ним. Не за вашим кодом.
Хорошего дня.
источник
Ответов много, не самый простой.
Чтобы проверить, существует ли индекс 'id' в словаре dict:
возвращает истину, если существует "возраст".
источник