Как применить int к каждой строке, используя map и lambda в python? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу избежать появления уродливых int для каждого элемента в списке.

dictionary[l[0]] = [(int(l[1])+ int(l[2])+ int(l[3]))/3] #avg score of 3 grades
    sub1 += int(l[1])
    sub2 += int(l[2])
    sub3 += int(l[3])

Список l содержит 4 элемента, от 0 до 3 индексов.Мне нужно применить int, начиная с 1-го элемента, а не 0-го элемента.

Я пытаюсь написать что-то вроде:

   map lambda x: int(x) for i in l[1:]

Нужна ли здесь лямбда, так как карта уже можетделать работу?

1 Ответ

0 голосов
/ 30 ноября 2018

map вызывает функцию для каждого элемента списка.Поскольку int - это функция, которую вы можете использовать

map(int, lst)

напрямую.

Лямбда-функции просто обеспечивают вам большую гибкость, например, если вы хотите сделать:

map(lambda x: 5*int(x), lst)

Более Pythonic способ сделать выше было бы использовать списочные понимания

[int(x) for x in lst]
[5*int(x) for x in lst]

В Python3 map возвращает генератор.Если вы хотите иметь список, вы должны сделать:

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