Проверьте, присутствует ли список в подсписке, содержащем список, кортежи - PullRequest
0 голосов
/ 21 октября 2018

У меня есть список, содержащий подсписки, и подсписки содержат другие списки и кортежи, подобные этому

[[(1.0, 1.5), [2, 2], (1.5, 1.0)], [(1.1428571343421936, 0.28571426868438721), [1, 0], (0.5, 0.0)], [(0.66666668653488159, 0.0), [0, 0], [0, 1], (0.5, 1.25)]]

Я хочу найти, существует ли [2,2] в подсписке или нет, и напечатать индекс этого подсписка.содержащий [2,2].Например,подсписок, содержащий [2,2]: 0.

Я пытался использовать следующий код, но он дает все элементы в возрастающей форме.

for index, value in enumerate(flat_list):
    if value == [xpred,ypred]:
        print(index)

Пожалуйста, предложите какую-нибудь альтернативу !!

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Вот некоторый код, который может помочь:

x = [[(1.0, 1.5), [2, 2], (1.5, 1.0)],
     [(1.1428571343421936, 0.28571426868438721), [1, 0], (0.5, 0.0)],
     [(0.66666668653488159, 0.0), [0, 0], [0, 1], (0.5, 1.25)]]

looking_for = [2,2]

for i in range(len(x)):
  for j in range(len(x[i])):
    if x[i][j] == looking_for:
        print([i,j])

Я создал вложенный цикл for.Внешний цикл перебирает все элементы в списке x.Эти пункты сами списки.Второй цикл for выполняет итерации в подсписках.Наконец, проверяется, соответствует ли кортеж или список тому, что вы ищете, и печатаются индексы тех, которые делают.

Надеюсь, что это ответ на ваш вопрос и удачи вам в кодировании!

0 голосов
/ 21 октября 2018

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

l = [[(1.0, 1.5), [2, 2], (1.5, 1.0)], [(1.1428571343421936, 0.28571426868438721), [1, 0], (0.5, 0.0)], [(0.66666668653488159, 0.0), [0, 0], [0, 1], (0.5, 1.25)]] 

is_in_l = [l.index(pos) for pos in l if [2,2] in pos]
if is_in_l:
    print('List Available at {} position'.format(is_in_l[0]))
else:
    print('List not present')
...