Есть ли простое выражение списка, которое получает индекс элемента в списке, но не значение элемента в списке? - PullRequest
0 голосов
/ 19 октября 2019

Учитывая список, z = [1, 5, 10, 100, etc...] Хотел бы получить позиции элементов в списке, а не значения элементов, используя выражение списка, в отличие от других методов.

Есть три варианта, которые язнать: [1] используя функции диапазона и длины for i in range(len(z)): [2] используя функцию перечисления и опуская значения answer = [i for i,v in enumerate(z)] [3], помещая функции range и len в выражение списка b = [i for i in range(len(z))]

... в итоге, существует ли функция, которая заменяет enumerate или range(len()), которая просто отбрасывает индекс без необходимости отбрасывать v.

# example list
z = [1, 20, 50, 100, 50]

# using the range and len functions
for i in range(len(z)):
    print(i)


# the enumerate method (ignoring v)
answer = [i for i,v in enumerate(z)]
print(answer)


# the range(len()) inside a list expression
answer = [i for i in range(len(z))]
print(answer)

желаемый ответ: [0, 1, 2, 3, 4]

Ответы [ 3 ]

0 голосов
/ 19 октября 2019

Нет необходимости в выражении списка, вы можете использовать:

list(range(len(z)))
0 голосов
/ 20 октября 2019

Нет встроенной функции, вы можете написать свою собственную в качестве альтернативы использованию подходов, которые вы уже описали.

def count(iterable):
    c = 0
    for _ in iterable:
        yield c
        c += 1

# TEST:
z = [1, 20, 50, 100, 50]
for i in count(z):
    print(i)

Результат:

0
1
2
3
4
0 голосов
/ 19 октября 2019

Нет функции, которую вы ищете.

Я думаю, range(len(z)) будет лучшим вариантом.

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