У цикла for для списков есть повторяющиеся значения - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь создать цикл for, но получаю какой-то нежелательный вывод:

Пример моего цикла:

input1 = ['a', 'b', 'c', 'd']
input2 = ['a', 'b', 'c', 'd', 'e']
for i in range(0,4,1)
    for j in range(0,5,1)
    output = input1[i] + "-" + input2[j]
    print(output)

После отладки будут получены следующие результаты:

a - a
b - b
c - c
d - d

Я не хочу их, потому что он будет равен нулю.

Может кто-нибудь подсказать мне, что с этим делать?

Ответы [ 3 ]

1 голос
/ 07 апреля 2019

Вывод на печать только в том случае, если input1[i] и input1[i] неравны:

input1 = ['a', 'b', 'c', 'd']
input2 = ['a', 'b', 'c', 'd', 'e']
for i in range(len(input1)):
    for j in range(len(input2)):
        if input1[i] != input2[j]:
            output = input1[i] + "-" + input2[j]
            print(output)

Обратите внимание, что range(1,4,1) и range(1,5,1) неверны, так как индекс списка начинается с 0, а не 1. Используйте range(list), чтобы убедиться, что все элементы в списке повторяются.

Поскольку вы читаете только из двух списков, вы можете использовать синтаксис for element in list, который перебирает элементы списка и намного чище:

input1 = ['a', 'b', 'c', 'd']
input2 = ['a', 'b', 'c', 'd', 'e']
for i in input1:
    for j in input2:
        if i != j:
            output = i + "-" + j
            print(output)

Выход:

a-b
a-c
a-d
a-e
b-a
b-c
b-d
b-e
c-a
c-b
c-d
c-e
d-a
d-b
d-c
d-e
0 голосов
/ 07 апреля 2019

Вы можете использовать if для сравнения input1[i] с input2[j] и пропустить некоторые пары

if input1[i] != input2[j]: 
    print(input1[i] + "-" + input2[j]) 

Ваш код работает, поэтому я изменил его.

Я использую for i in input1 вместо for i in range(1,4,1), чтобы сделать его более читабельным

input1 = ['a', 'b', 'c', 'd']
input2 = ['a', 'b', 'c', 'd', 'e']

for i in input1:
    for j in input2:
        if i != j:
            print(i + "-" + j)
0 голосов
/ 07 апреля 2019

Вы можете попробовать этот пример кода, чтобы исключить те же элементы:

input1 = ['a', 'b', 'c', 'd']
input2 = ['a', 'b', 'c', 'd', 'e']
for i in range(1,4,1)
    for j in range(1,5,1)
       if input1[i] != input[j]
          output = input1[i] + "-" + input2[j]
          print(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...