Найти - Пользователи
Полная версия: Списки
Начало » Python для новичков » Списки
1 2
Ilya
.
Ilya
Будьте добры, помогите.
У меня два списка a и b. После каждого хода они меняются и производится функция logic, которая должна проверять наличие какой-либо тройки элементов. Элементы в моем случае это цифры от 0 до 9.
Тройки элементов могут быть предварительно заданы(правда я не уверен, как правильно их задавать). В список a и b элементы забиваются в произвольном порядке.
Теми тремя способами решить данную проблемку не выходит.
py.user.next
>>> 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
Добавил случай в конце.
bismigalis
>>> 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
WoMax
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
Или решение с употребление оператора 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]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB