Как повторить строку в массиве? - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу повторить len(non_current_assets) раз строку в массиве. Поэтому я попытался:

["",  "totalAssets", "total_non_current_assets" * len(non_current_assets), "totalAssets"]

Но он возвращает:

['',
 'totalAssets',
 'total_non_current_assetstotal_non_current_assetstotal_non_current_assetstotal_non_current_assetstotal_non_current_assets',
 'totalAssets']

Ответы [ 4 ]

3 голосов
/ 08 апреля 2020

Поместите str внутрь list, умножьте, затем распакуйте (используя оператор *):

non_current_assets = (1, 2, 3, 4, 5)  # so len(non_current_assets) == 5, might be anything as long as supports len
lst = ["",  "totalAssets", *["total_non_current_assets"] * len(non_current_assets), "totalAssets"]
print(lst)

Вывод:

['', 'totalAssets', 'total_non_current_assets', 'total_non_current_assets', 'total_non_current_assets', 'total_non_current_assets', 'total_non_current_assets', 'totalAssets']

(проверено в Python 3,7)

1 голос
/ 08 апреля 2020

Это должно работать:

string_to_be_repeated = ["total_non_current_assets"]
needed_list = string_to_be_repeated * 3
list_to_appended = ["","totalAssets"]
list_to_appended.extend(needed_list)
print(list_to_appended)
0 голосов
/ 08 апреля 2020

Вы можете использовать itertools.repeat вместе с оператором распаковки *:

import itertools as it

["",  "totalAssets",
 *it.repeat("total_non_current_assets", len(non_current_assets)),
 "totalAssets"]

Это довольно ясно дает намерение и сохраняет создание временного списка (следовательно, лучше производительность).

In [1]: import itertools as it                                                                

In [2]: %timeit [0, 1, *[3]*1000, 4, 5]                                                       
6.51 µs ± 8.57 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [3]: %timeit [0, 1, *it.repeat(3, 1000), 4, 5]                                             
4.94 µs ± 73.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
0 голосов
/ 08 апреля 2020

Вы хотите использовать al oop:

    for x in range(len(non_current_assets)):
       YOUR_ARRAY.append(”total_non_current_assets“)
...