如何在数组中重复字符串?

How to repeat string in an array?

我想将数组中的字符串重复 len(non_current_assets) 次。所以我尝试了:

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

但是 returns:

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

将你的 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 中测试)

您想使用循环:

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

这应该有效:

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)

您可以使用 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)