【问题标题】:How to repeat string in an array?如何在数组中重复字符串?
【发布时间】:2020-04-08 13:17:07
【问题描述】:

我想在数组中重复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']

【问题讨论】:

    标签: python arrays python-3.x list repeat


    【解决方案1】:

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

    【讨论】:

    • 对我有用,谢谢。我会让这个问题开放一段时间,如果没有更好的答案弹出,我会接受它
    【解决方案2】:

    这应该可行:

    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)
    

    【讨论】:

      【解决方案3】:

      你想使用循环:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-19
          相关资源
          最近更新 更多