【问题标题】:Repeat values in nested list嵌套列表中的重复值
【发布时间】:2021-08-04 06:51:37
【问题描述】:

我是个新手,正在为训练营做准备工作。我遇到了以下 Python 练习:

我有一个嵌套列表,例如 [[1,2],[3,4]]。每个子列表中的第一个值是要重复的值,第二个是重复该值的次数。

我想得到一个数字重复适当次数的字符串,例如“11, 3333”。如果有多组值,则应以逗号分隔;如果只有一组,则应省略逗号。我需要创建一个函数。

我尝试为值和重复次数创建两个单独的子列表,然后 np.repeat 一个列表一个列表。

data_list =[[1,2],[3,4]]

num_list = [val [0] for val in data_list]
repeat_list = [val[1] for val in data_list]
result = np.repeat (num_list, repeat_list)

print (result)

[1 1 3 3 3 3]

在这种情况下,我不知道如何用逗号分隔它。这不是一个函数。

我觉得我可能需要将 np.repeat 与“for”循环一起使用,但我无法弄清楚它到底应该是什么样子。

谢谢。

【问题讨论】:

标签: python nested-loops nested-lists


【解决方案1】:

你可以这样做:

result = ""
for sublist in nested_list:
    # For each sublist, turn the first element into a string, and multiply it by the second element, then add a comma
    result += str(sublist[0]) * sublist[1] + ","

# Remove the last trailing comma
result = result[:-1]

【讨论】:

  • 非常感谢 Ben,尤其是 cmets!我不知道为什么我得到一个错误“在赋值之前引用了局部变量'结果'”,但这可能只是我的 jupyter.notebook 问题,而不是代码。
  • 确保您已包含result 声明(第一行,result = ""
【解决方案2】:

没有for循环和numpy

', '.join(
    map(lambda l: str(l[0])*l[1], data_list)
)

列表中的每个条目都将其映射到字符串,然后将这些字符串连接在一起

【讨论】:

    【解决方案3】:

    一个可能的解决方案:

    l=  [[1, 2], [3, 4]]
    
    final=[]    
    for i in l:
        final.append(list(str(i[0]) * i[1]))
    

    【讨论】:

    • 非常感谢您的帮助!问题是我需要字符串,用逗号分隔,输出应该是这样的“11, 3333”,而不是这样的“[['1', '1'], ['3', '3', '3 ', '3']]"。当我尝试将您的代码更改为 final = "" 时,它不允许我再执行 .append。
    【解决方案4】:

    你可以这样做。

    data_list =[[1,2],[3,4]]
    res = []
    for i in data_list:
        s = str(i[0]) * i[1]
        res.append(s)
    
    print(f'List: {res}')
    print(f'String: {", ".join(res)}')
    
    List: ['11', '3333']
    String: 11, 3333
    

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 2020-05-08
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      相关资源
      最近更新 更多