Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 18, 2016 15:32:25

Xion
Зарегистрирован: 2016-01-17
Сообщения: 21
Репутация: +  0  -
Профиль  

Как применить функцию для определенных элементов списка

Можно применить функцию для всех элементов:
list = map(func, list)

Но как применить функцию допустим к 2м элементам
Для примера список:

[['1','2','3','4'],['1','2','3','4'],['1','2','3','4']]
Как применить int() к первым 2м элементам каждого списка в этом списке? (То есть к ‘1’ и ‘2’)?

Отредактировано Xion (Янв. 18, 2016 15:33:29)

Офлайн

#2 Янв. 18, 2016 15:44:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как применить функцию для определенных элементов списка

>>> lst = [['1', '2', '3', '4'],
...        ['5', '6', '7', '8'],
...        ['9', '10', '11', '12']]
>>> 
>>> out = [[i.index(j) >= 2 and j or int(j) for j in i] for i in lst]
>>> out
[[1, 2, '3', '4'], [5, 6, '7', '8'], [9, 10, '11', '12']]
>>>



Отредактировано py.user.next (Янв. 18, 2016 15:46:03)

Офлайн

#3 Янв. 18, 2016 15:58:42

Xion
Зарегистрирован: 2016-01-17
Сообщения: 21
Репутация: +  0  -
Профиль  

Как применить функцию для определенных элементов списка

Спасибо, с помощью вашего ответа я нашел чуть более наглядное решение:

lst = [['1', '2', '3', '4'],
        ['5', '6', '7', '8'],
       ['9', '10', '11', '12']]
 
out = [[int(j) if i.index(j)<=1 else j for j in i] for i in lst]
print(out)
[[1, 2, '3', '4'], [5, 6, '7', '8'], [9, 10, '11', '12']]
пока результаты and и or для меня пока не очевидны
прочитав о них я конечно понимаю как они работают, но потом быстро забывается, так как их действие крайне не очевидное, возможно даже уникальное среди языков программирования

Офлайн

#4 Янв. 18, 2016 16:26:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как применить функцию для определенных элементов списка

Xion
возможно даже уникальное среди языков программирования
Не, это поведение известно ещё с lisp'а.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version