Выберите элементы из списка и распечатайте их в 2-х десятичном формате - PullRequest
0 голосов
/ 08 октября 2019

У меня есть 2 списка: один для индексов (vv ниже) и другой для чисел с плавающей запятой (aa ниже). Я хочу сделать 2 вещи с Python 2.7.

(1) использовать vv, чтобы выбрать элементы из aa, чтобы создать новый список ww

(2) print ww в 2-х десятичном формате. Количество показателей варьируется. Мне удается сделать это с помощью следующего кода

# A list of indices
vv = [1, 2, 4]
# A list of floats
aa = [31.123456, 37.354135, 41.987438, 43.458713, 52.687135, 65.321486]

ww = []
for ii in vv:
    ww.append(aa[ii])

print "Indices ", vv, "correspond to [",
for ff in ww:
    print "%.2f," % ff,

print "]"

Его вывод:

    Indices  [1, 2, 4] correspond to [ 37.35, 41.99, 52.69, ]

но я не доволен этим. Для (1) есть более Pythonish способ сделать это, а для (2) вывод не совсем так, как я хочу, так как в конце слишком много запятых и есть лишние пробелы вокругкронштейны. Он должен выглядеть как

    Indices  [1, 2, 4] correspond to [37.35, 41.99, 52.69]

и, конечно, работать с любым количеством индексов. При поиске похожих сообщений они всегда имеют фиксированное, заранее известное число индексов. Я думаю, что понимание списка как-то сработает? Это упоминалось в https://stackoverflow.com/a/16986985/11199684

Ответы [ 2 ]

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

Вы можете использовать join, чтобы сделать это:

ww = [round(aa[elem],2) for elem in vv]
print('Indices ' + ','.join(map(str,vv)) + ' correspond to [' + ', '.join(map(str,ww)) + ']')

Результат:

Indices 1,2,4 correspond to [37.35, 41.99, 52.69]
0 голосов
/ 08 октября 2019

Если Python 2.7 или позже, чем

print ("Indices ", vv, "correspond to",[round(aa[x], 2) for x in vv])

Попробуйте это

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