Python: логарифм по основанию 2 во вложенных списках - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть этот список:

mylist = [['A',5,6,7],['C',3,90,5.3],['G',5,4,6]]

Как мне получить логарифм для основания 2 в таких вложенных списках?

Это мой подход:

from math import log
print([log(x,2) for x in mylist2[1:]])

Выходы должны быть такими:

[['A',2.321928094887362, 2.584962500721156, 2.807354922057604],['C',1.5849625007211563, 6.491853096329675, 2.4059923596758366],['G',2.321928094887362, 2.0, 2.584962500721156]]

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Не совсем понятно, как вы хотите, чтобы ваш вывод был отформатирован.Но если вы хотите сохранить его в том же «формате», что и входные данные, вот быстрый однострочный:

In [6]: list(map(lambda row: [row[0]] + [log(item, 2) for item in row[1:]], mylist))
Out[6]:
[['A', 2.321928094887362, 2.584962500721156, 2.807354922057604],
 ['C', 1.5849625007211563, 6.491853096329675, 2.4059923596758366],
 ['G', 2.321928094887362, 2.0, 2.584962500721156]]

Если вы просто хотите, чтобы значения log без «ключа» начинались каждыйсписок, пропустите [row[0]] + часть.

HTH.

0 голосов
/ 10 декабря 2018

Самый быстрый подход ( явно не в вычислительных терминах ) - это наивное решение, подобное этому:

from math import log

mylist = [['A',5,6,7],['C',3,90,5.3],['G',5,4,6]]

for numbers in mylist:
  for number in numbers[1:]:
    print log(number,2) #or assign to something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...