Python - для цикла - печатать, только если строка выше - PullRequest
0 голосов
/ 18 сентября 2018

У меня следующий код:

characters = ['a', 'b', 'b', 'c','d', 'b']

for i in characters:
    if i[0] == i[-1]:
        print(i)

По сути, я хочу извлечь только те символы, которые равны строке выше.Например, в моем случае я хочу извлечь только b из позиций 1 и 2.

Как я могу это сделать?

Спасибо!

Ответы [ 5 ]

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

маленькая модификация в вашем коде

characters = ['a', 'b', 'b', 'c','d', 'b']
ch=  (characters[-1])
for i in characters:
    if i == ch:
        print(i
0 голосов
/ 18 сентября 2018

Без многократного повторения по одному и тому же списку.

characters = ['a', 'b', 'b', 'c','d', 'b']
last_char = None

output = []

for char in characters:
    if char == last_char:
        output.append(char)
    last_char = char

print(output)
0 голосов
/ 18 сентября 2018
a = ['a', 'b', 'b', 'c', 'd', 'b']
b = ['a', 'b', 'b', 'c', 'd', 'b', 'd']

import collections

print([item for item, count in collections.Counter(a).items() if count > 1])
print([item for item, count in collections.Counter(b).items() if count > 1])

выход

['b']
['b', 'd']
0 голосов
/ 18 сентября 2018
equal = [a for a in characters[0:-1] if a == characters[-1]]

Если вам не нужен последний символ, который всегда будет равен самому себе, тогда выполните:

equal = [a for a in characters if a == characters[-1]]
0 голосов
/ 18 сентября 2018

Чтобы извлечь символы из списка, который соответствует только последнему символу из списка, вы можете сделать следующее:

characters = ['a', 'b', 'b', 'c','d', 'b']

for i in range(0, len(characters) - 1):
    if characters[i] == characters[-1]:
        print(characters[i])

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...