Как избежать двойного счета индекса дубликата элемента в понимании списка - PullRequest
0 голосов
/ 14 мая 2019

Предположим, у меня есть список:

nums = [3,3,1,5,6]

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

indices = [print(nums.index(x),nums.index(y)) for x in nums for y in nums]

Проблема, с которой я сталкиваюсь - это вывод:

0 0
0 0
0 2
0 3
0 4
0 0
0 0
0 2
0 3
0 4
2 0
2 0
2 2
2 3
2 4
3 0
3 0
3 2
3 3
3 4
4 0
4 0
4 2
4 3

Как вы заметите, индекс "1" никогда не печатается, потому что nums.index (x) будет сообщать только о первом экземпляре найденного элемента, а не о местонахождении самого элемента.

Как мне сделать так, чтобы результаты печатались точно? В качестве примера желаемого вывода я сделал все значения уникальными и переписал код.

0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
2 4
3 0
3 1
3 2
3 3
3 4
4 0
4 1
4 2
4 3
4 4

1 Ответ

2 голосов
/ 14 мая 2019

Вы ищете перечисление, которое даст вам позицию индекса в качестве переменной при итерации.

nums = [3,3,1,5,6]
indices = [print(i,z) for i,x in enumerate(nums) for z,y in enumerate(nums)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...