Сравнение кортежа в списке с другим кортежем - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть список кортежей.Я хочу выбрать каждый кортеж в списке и сравнить его с другим кортежем, который я определил.

Код, который я использовал, выглядит следующим образом:

list1 = [(3, 4), (4, 5), (5, 6)]
for item in list1:
   if list1[item] == (4,5)
      print ("OK")

, но он говорит, что индексы списка должны быть целым числом или срезом.Если я хочу взять каждый кортеж в списке и сравнить его с другим, как мне его кодировать?

, пожалуйста, помогите мне!

Ответы [ 5 ]

0 голосов
/ 25 сентября 2018

Вам не нужен цикл ЕСЛИ у вас есть только один кортеж для проверки.Просто проверьте с помощью if

tpl = (4,5) # Single user defined tuple
if tpl in list1:
    print ("OK")

Если у вас есть много наборов для проверки

tuplst = [(3,4), (1,2)] # List of tuples
list1 = [(3, 4), (4, 5), (5, 6)]

for tpl in tuplst:
    if tpl in list1:
        print ("OK")

Проблема в вашем коде заключалась в том, что когда вы делаете list1[item], вы пытаетесь сделать list1[(3, 4)], который не является правильным способом индексирования списка, и, следовательно, вы получаете IndexError

0 голосов
/ 25 сентября 2018

Альтернативное решение:

for i in list1:
    if i==(4,5):
        print("Ok")
    else:
        ....
0 голосов
/ 25 сентября 2018

Вы можете просто проверить, есть ли в списке кортеж ((4, 5) в приведенном ниже примере):

if (4, 5) in list1:
    print('OK')

нет необходимости в явном цикле.

, если выЕсть несколько кортежей для проверки, я предлагаю вам использовать set s:

cmp = set(((4, 5), (5, 6)))
if cmp < set(list1):
    print('OK')

, это проверяет, появляется ли оба кортежа хотя бы один раз в вашем исходном списке.

0 голосов
/ 25 сентября 2018

попробуйте это:

list1 = [(3, 4), (4, 5), (5, 6)]
for item in list1:
    if item == (4,5):
        print ("OK")
0 голосов
/ 25 сентября 2018

Вы можете добиться этого следующим образом.

list1 = [(3, 4), (4, 5), (5, 6)]
for item in range(len(list1)):
    if list1[item] == (4,5):
        print ("OK")
    else:
        continue
...