Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2014 21:40:54

dapaci
Зарегистрирован: 2014-02-27
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

Добрый вечер. Я сейчас в цикле for перебираю массив и сверяю его элементы со значением, полученным от пользователя, используя примерно такой код

lst = [1, 2, 3, 4, 5, 6]
a = input('...')
for num in lst:
    if a == num:
        print("найдено")
        break
Я хотел бы вывести надпись “не найдено”, если пройдясь по всему циклу элементы так и не совпадут. Первое что приходит в голову - флажок, который примет значение True или False, после чего я выведу нужную надпись. Но, кажется, в питоне должно быть решение покрасивее. Подозреваю что это можно реализовать какой-нибудь lambda функцией, но понятия не имею как это сделать. проверка на вхождение по типу
a in lst
не подходит, потому что в проекте код сложнее и собирать из него отдельный массив - еще хуже чем флажок.
Подскажите, пожалуйста, как это реализовать покрасивее.

Офлайн

#2 Фев. 27, 2014 22:09:58

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

Blow mind!

Офлайн

#3 Фев. 27, 2014 22:15:47

dapaci
Зарегистрирован: 2014-02-27
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

Singularity
Blow mind!
вообще ничего не понятно из того, что я написал?)

Офлайн

#4 Фев. 27, 2014 22:21:57

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

dapaci
теперь вы меня понимаете

Офлайн

#5 Фев. 27, 2014 22:28:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

dapaci
используя примерно такой код
он в списке из целых чисел ищет строку

dapaci
проверка на вхождение по типу
a in lst
не подходит
почему не подходит ?



Отредактировано py.user.next (Фев. 27, 2014 22:28:18)

Офлайн

#6 Фев. 27, 2014 22:29:46

dapaci
Зарегистрирован: 2014-02-27
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

суть в том, что нужно выполнить какое-то действие, если мы перебрали весь массив и не нашли нужных элементов в нем

Офлайн

#7 Фев. 27, 2014 22:55:05

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

if a not in lst:
# элемент не найден. делаем что угодно
else:
# элемент найден, если надо то тут что то с ним делаем. Либо вообще без else, просто код будет выполняться далее
Мы до сих пор не понимаем чем вам не угождает эта запись. Вы либо не понимаете вообще что делаете. либо не договариваете нам. Потому что основываясь на всем что вы сказали все сделают один вывод - подобная запись подходит более чем.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Фев. 27, 2014 23:02:25

dapaci
Зарегистрирован: 2014-02-27
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

dapaci
не подходит, потому что в проекте код сложнее и собирать из него отдельный массив - еще хуже чем флажок.
Я не стал вдаваться в подробности о том, что в проекте у меня список словарей со значениями равными и строкам и спискам. Мне придется в каждой итерации складывать все элементы словаря в список для того, что бы выполнить a in lst.

Офлайн

#9 Фев. 28, 2014 00:16:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

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



Офлайн

#10 Фев. 28, 2014 00:36:52

dapaci
Зарегистрирован: 2014-02-27
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Перебор списка с проверкой на совпадение

пусть массив будет таким

lst = [
    {
        "first_name": "Ivan",
        "last_name": "Ivanov",
        "middle_name": "Ivanovich",
        "note": ['yes', 'my', 'fantasy', 'is', 'perfect']
    },
    {
        "first_name": "Andrey",
        "last_name": "Andreenko",
        "middle_name": "Andreevich",
        "note": ['and', 'my', 'too']
    }
...
]
а искать мы будем a со значением ‘Andrey’
тогда мой код сейчас выглядит так:
for user in lst:
    if a == user['first_name']:
        print "%s detected" % a
        break
Если а будет равным, например, ‘Arkadiy’, то было бы хорошо вывести что-то вроде “не найден”

Отредактировано dapaci (Фев. 28, 2014 00:38:44)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version