Python, проверьте элемент X из подстрок - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь проверить, совпадает ли элемент с позиции X в каждом подсписке. как:

У нас есть список списков:

s= [[0,0,0],[0,0,1],[0,0,1]]

И я хочу проверить, что 3-й элемент одинаков во всех подсписках. Как и в этом примере, go true только для второго и третьего подсписков

for x in s:
    if x[2] == 1:
        print "T"

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 22 января 2020

Вы можете использовать all.

s= [[0,0,1],[0,0,1],[0,0,1]]
if all(map(lambda x:x[-1],s)):
    print('T')
else:
    print('N') 

Или вы можете zip.

x= zip(*s) 

if len(set(x[-1]))==1:
    print('T') 
else:
    print ('N')
0 голосов
/ 22 января 2020

Вы можете попробовать это:

decision = 'T'
s= [[0,0,0],[0,0,1],[0,0,1]]

for x in s:
    if x[2] != 1:
        decision = "F"
        break
print(decision)

Вывод:

F

В качестве альтернативы:

if all(x[2] == 1 for x in s):
    print('T')
else:
    print('F')

Если вы не знаете элемент 3rd заранее:

if len({x[2] for x in s}) == 1:
    print('T')
else:
    print('F')
0 голосов
/ 22 января 2020

Ваш метод подхода неверен,
Что касается моего понимания вопроса, вам нужно проверить, является ли 3-й элемент в списке одинаковым для всех элементов в списке, используйте функцию, подобную этой, которая возвращает True это тот же элемент, иначе False.

def is_same(s) :
    temp = s[0][2]  # temporarily save the 3rd element in a variable
    for x in s :    # loop through all the elements
        if x[2] != temp :  # check for the miss match
            return False
    return True

s = [[0,0,1], [0, 1, 1], [0,1,1]]

print(is_same(s))
0 голосов
/ 22 января 2020
s= [[0,0,0],[0,0,1],[0,1,1]]
pos=2
for i in range(len(s)):
    for j in range(len(s)):
        if i<j:
            if s[i][2]==s[j][2]:
                print (s[i],s[j])

в этом коде сравнивает все субаренды и, если число в последнем положении одинаково, выведите список 2.

output:

[0, 0, 1] [0, 1, 1]

...