Уведомления

Группа в Telegram: @pythonsu

#1 Май 30, 2014 17:30:18

Ilya
Зарегистрирован: 2014-05-25
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Списки

.

Отредактировано Ilya (Май 30, 2014 20:06:04)

Офлайн

#2 Май 30, 2014 20:06:08

Ilya
Зарегистрирован: 2014-05-25
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Списки

Будьте добры, помогите.
У меня два списка a и b. После каждого хода они меняются и производится функция logic, которая должна проверять наличие какой-либо тройки элементов. Элементы в моем случае это цифры от 0 до 9.
Тройки элементов могут быть предварительно заданы(правда я не уверен, как правильно их задавать). В список a и b элементы забиваются в произвольном порядке.
Теми тремя способами решить данную проблемку не выходит.

Офлайн

#3 Май 30, 2014 21:55:51

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

Списки

>>> def f(lst, sub):
...     return len(set(lst) & set(sub)) == len(sub)
... 
>>> f([1, 2, 3, 4, 5, 6, 7], [2, 5, 7])
True
>>> f([1, 2, 3, 4, 5, 6, 7], [0, 8, 9])
False
>>> f([1, 2, 3, 4, 5, 6, 7], [2, 5, 8])
False
>>> f([1], [1, 1])
False
>>>

add
Добавил случай в конце.



Отредактировано py.user.next (Май 31, 2014 11:05:19)

Офлайн

#4 Май 31, 2014 08:32:07

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Списки

>>> lst = [1,2,3,4,5,6,8,9,0]
>>> {0,1,2}.issubset(lst)
True
>>> set([6,7,8]).issubset(lst)
False
>>> set([0,1,2]) < set(lst)
True
>>> {6,7,8} < set(lst)
False

Отредактировано bismigalis (Май 31, 2014 17:40:27)

Офлайн

#5 Июнь 1, 2014 17:07:55

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Списки

2Ilya
логический оператор and выдает левый операнд если он ложный, иначе вернет правый операнд.

То есть выражение:

0 and 1
выдаст тебе 0

а код:
b=[(0 and 1 and 2),(6 and 7 and 8),(2 and 4 and 6)]
выдаст тебе список:
[0, 8, 6]

А данные элементы списка есть в твоем списке а.


Решение задачи, если я правильно ее понял:
b=[(0, 1, 2),(6, 7, 8),(2, 4, 6)]
a=[1,2,3,4,5,6,8,9,0]
def logic(a, b):
    for x in a:
        M = set(x) & set(b)
        if M == set(x):
            print(x, 'in', b)
        else:
            print(x, "isn't in", b)
            
if __name__ == '__main__':
    logic(b, a)

outpoot:
(0, 1, 2) in [1, 2, 3, 4, 5, 6, 8, 9, 0]
(6, 7, 8) isn't in [1, 2, 3, 4, 5, 6, 8, 9, 0]
(2, 4, 6) in [1, 2, 3, 4, 5, 6, 8, 9, 0]

Отредактировано WoMax (Июнь 1, 2014 17:24:02)

Офлайн

#6 Июнь 1, 2014 17:20:53

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Списки

Или решение с употребление оператора and, если он тебе уж так понравился

b=[(0, 1, 2),(6, 7, 8),(2, 4, 6)]
a=[1,2,3,4,5,6,8,9,0]
def logic(a, b):
    for x in a:
        if x[0] in b and x[1] in b and x[2] in b:
            print(x, 'in', b)
        else:
            print(x, "isn't in", b)
                
if __name__ == '__main__':
    logic(b, a)

output:
(0, 1, 2) in [1, 2, 3, 4, 5, 6, 8, 9, 0]
(6, 7, 8) isn't in [1, 2, 3, 4, 5, 6, 8, 9, 0]
(2, 4, 6) in [1, 2, 3, 4, 5, 6, 8, 9, 0]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version