Удаление строк, содержащих одинаковые значения в Python - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу объединить элементы в list_a и list_b.И list_a, и list_b имеют одинаковые элементы. В каждом списке 5 элементов, поэтому выходные данные должны иметь 5x5 = 25.Но я хочу, чтобы моя программа не печатала те 5 строк, которые имеют одинаковые элементы. Пожалуйста, посмотрите на вывод.

list_a=["apple","banana","melon","grape","orange"] list_b=["apple","banana","melon","grape","orange"]<br> for x in list_a: for z in list_b: print(x,"-",z)

яблоко-яблоко банан-банан дыня-дыня виноград-виноградоранжевый-оранжевый Спасибо

1 Ответ

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

I думаю вы ищете декартово произведение без повторяющихся строк.

Если так:

>>> ['{} - {}'.format(a,b) for a in list_a for b in list_b if a!=b]
['apple - banana', 'apple - melon', 'apple - grape', 'apple - orange', 'banana - apple', 'banana - melon', 'banana - grape', 'banana - orange', 'melon - apple', 'melon - banana', 'melon - grape', 'melon - orange', 'grape - apple', 'grape - banana', 'grape - melon', 'grape - orange', 'orange - apple', 'orange - banana', 'orange - melon', 'orange - grape']

Или, наPython 3.7:

>>> [f'{a} - {b}' for a in list_a for b in list_b if a!=b]

Чтобы ваша версия работала, просто добавьте в свой цикл continue:

for x in list_a:
    for z in list_b:
        if x==z: continue
        print(x,"-",z)

Или,

for x in list_a:
    for z in list_b:
        if x!=z: print(x,"-",z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...