【问题标题】:I want to make a list of list in python in loop我想在循环中的python中制作一个列表列表
【发布时间】:2021-08-31 13:55:56
【问题描述】:

我想得到类似的输出

['a','aa','aaa','aaaa','aaaaa'],['b','bb','bbb','bbbb','bbbbb'],['c','cc','ccc','cccc','ccccc'] 

使用下面的代码sn-p

    a = ["a","b","g","f"]
    b =[1,2,3,4,5]
    e = []
    f = []
    for i in a:
        for j in b:
            e.append(i*j)

        f.append(e)
    print(f)

谁能帮我解决这个问题

【问题讨论】:

  • [[x*y for x in b] for y in a]
  • 谢谢@Chris,你是救命稻草。

标签: python python-3.x list loops


【解决方案1】:

在每个外部循环之后,您无法将 e 重置为新的空 list,因此您将一堆别名插入到同一个 list。只需在两个fors 之间移动e = [](并缩进以匹配),例如:

for i in a:
    e = []
    for j in b:
        ...

所以你创建一个新的list 来填充每个循环。

或者,如 cmets 中所述,嵌套的 listcomp 可以解决问题:

f = [[x * y for x in b] for y in a]

完全消除了对命名e 的需求(并且启动时运行速度更快)。

【讨论】:

  • 谢谢@ShadowRanger
【解决方案2】:

您似乎忘记在每次迭代时重置您的列表。这将产生您想要的结果:

a = ["a","b","g","f"]
b =[1,2,3,4,5]
e = []
f = []
for i in a:
    e= []
    for j in b:
        e.append(i*j)
    f.append(e)
print(f)

【讨论】:

    【解决方案3】:

    唯一的错误是您没有在 a 中的每次迭代后将 e 重置为 []。让我解释一下:

    这是您需要的代码:

    for i in a:
        for j in b:
            e.append(i*j)
    
        f.append(e)
        e = []
    

    最后你需要e = []。如果没有e = [],则在第一次迭代结束时,e = ['a', 'aa'...]。在第二次迭代中,e 将等于 [a, aa, aaa, aaaa, aaaaa, b, bb, bbb...] 但是,将其设置为空列表会停止。

    【讨论】:

    • 非常感谢@The Pilot Dude
    • 不用担心,我很高兴它有帮助
    【解决方案4】:

    Python 有一个属性,如果你将一个数字与一个字符串相乘,它会将该字符串相乘,例如:

    print(2*"ab")
    

    阿巴

    你可以用这个来回答:

    a = ["a","b","g","f"]
    b =[1,2,3,4,5]
    c = [[x*y  for x in b] for y in a]
    print(c)
    

    【讨论】:

    • 谢谢@Kumar Aditya
    • OP 清楚地理解了序列乘法;他们在原始代码中故意使用它...
    【解决方案5】:

    冗长,但这也很好用

    a = ['a','b','c','d']
    b = [1,2,3,4,5]
    nest_array = []
    for i in range(0,len(a)):
        arr = []
        for val in b:
            str1 = ""
            while len(str1) < val:
                if len(str1) == val:
                    break
                else:
                    str1 += a[i]
            arr.append(str1)
        nest_array.append(arr)
    print(nest_array)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2016-08-12
      • 2017-08-27
      相关资源
      最近更新 更多