Сочетание строки и целого числа и печати - PullRequest
0 голосов
/ 04 ноября 2018

С учетом приведенных ниже списков:

a = ['abc','cde','efg']
b = [[1,2,3],[2,3,4],[4,5,6]]

Что такое оптимизированный способ печати вывода, как показано ниже: В поисках оптимизированного способа, так как на самом деле у меня есть около 100 х 100 элементов. Также имейте в виду, что каждый элемент в b является целым числом, а в a - строка

abc,1,2,3
cde,2,3,4
efg,4,5,6

Ответы [ 3 ]

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

Использование range,

for i in range(len(b)):
    print("{},{}".format(a[i],','.join([str(x) for x in b[i]])))

#output,
abc,1,2,3
cde,2,3,4
efg,4,5,6
0 голосов
/ 04 ноября 2018

Вы можете попробовать использовать zip() и str.join():

>>> a = ['abc','cde','efg']
>>> b = [[1,2,3],[2,3,4],[4,5,6]]
>>> print('\n'.join(','.join(map(str, (x, *y))) for x, y in zip(a, b)))
abc,1,2,3
cde,2,3,4
efg,4,5,6
0 голосов
/ 04 ноября 2018

Для печати в указанном вами формате:

print('\n'.join([a[i] + ',' + str(b[i]).strip('[').strip(']').replace(' ','') for i in range(len(a))]))

Выход:

abc,1,2,3
cde,2,3,4
efg,4,5,6
Элемент

100 * 100 - это очень небольшое число для программы на Python - любая оптимизация в таком масштабе, вероятно, не сможет быть настолько значимой, чтобы нас, людей заметили. Для проверки:

%%timeit
array = np.random.randn(100,100)
print('\n'.join([str(e) for e in array])) # prints like above

результат:

148 ms ± 13.2 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Кроме того, имейте в виду, что основной горлышком бутылки должен быть print, а не фактический процесс, выполняющий печать, поэтому использование zip или другого трюка может не сработать, поскольку они не помогают захватить терминал / другой стандартный вывод достаточно быстро печатать.

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