2016-09-08 3 views
2

Я работаю над этим довольно долгое время, и инструкция if не оказывает никакого влияния на код. что я пытаюсь сделать, так это то, что я хочу вводить слова в список без повторения.Как проверить, содержит ли список уже элемент в Python?

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    line.rstrip() 
    words = line.split() 
    if lst.count(words) == 0: 
     lst = lst + words 
    lst.sort() 
print lst 
+1

, чтобы получить уникальные предметы в списке, вы можете сделать это: 'non_repeat_list = список (набор (repeat_list))' – TuanDT

+0

@Andy - Это не дубликат. Проверка членства в этом вопросе терпит неудачу, поскольку проверяет, существует ли список в другом списке. Если это не так, оно расширяет список. Например, '[1, 2, 3] в [2, 5, 7, 1, 2, 3]' ожидается возврат 'True', но это не его фактическое поведение. – TigerhawkT3

ответ

4

Используйте set(), она обеспечивает уникальные элементы. В качестве альтернативы вы можете использовать оператор in для проверки членства в списке (, хотя на порядок менее эффективный).

2
>>> instuff = """one two three 
... two three four 
... three four five 
... """ 
>>> lst = set() 
>>> for line in instuff.split("\n"): 
... lst |= set(line.split()) 
... 
>>> lst 
set(['four', 'five', 'two', 'three', 'one']) 
>>> 
+0

'set.union (* (set (line.split()) для строки в instuff.splitlines()))' – donkopotamus

Смежные вопросы