列表追加循环问题

时间:2011-08-11 15:44:17

标签: python python-3.x

如何修改此代码以制作3个列表,每个列表中包含5个元素,而不是现在; 3个列表包含5/10/15个元素?

import random

y = []

def autoSolve():
    for i in range(5):
        z = random.randrange(1, 10)
        y.append(z)
    print(y, end="")

for i in range(3):
    print("number", i + 1,)
    autoSolve()
    print()

6 个答案:

答案 0 :(得分:10)

y = []移动到autoSolve方法中,以便在每次调用时重置。

def autoSolve():
    y = []
    for i in range(5):
        z = random.randrange(1, 10)
        y.append(z)
    print(y, end="")

答案 1 :(得分:1)

您每次都打印相同的列表y

y空出来。

for循环的第一次迭代,y最终会有5个元素。

第二次迭代y.append使其增加到10个元素。

为防止这种情况,请填写

y=[]

autoSolve()方法中。

答案 2 :(得分:0)

y = []移至autoSolve的开头。

答案 3 :(得分:0)

import random

y = []

def autoSolve():
    x = []
    for i in range(5):
        z = random.randrange(1, 10)
        x.append(z)
    print(x, end="")
    return x

for i in range(3):
    print("number", i + 1,)
    y.append(autoSolve())
    print()

答案 4 :(得分:0)

import random

def autoSolve():
    y = []
    for i in range(5):
        z = random.randrange(1, 10)
        y.append(z)
    return y #you could return instead, it'd be cleaner 
   
for i in range(3):
    print("number", i + 1,)
    print(autoSolve())
number 1
[4, 8, 4, 2, 9]
number 2
[8, 2, 4, 8, 9]
number 3
[4, 8, 1, 3, 5]

[Program finished]

使用列表理解的替代方法,

import random

lists = [[random.randrange(1, 10) for i in range(5)] for j in range(3)]

for lst in lists:
  print(f"Number: {lists.index(lst)+1}")
  print(f"List: {lst}")
  print("") 

使用 random.choices

import random

lists = [random.choices(range(10), k = 5)for j in range (3 )]
    

for i, lst in enumerate(lists, start=1):
  print(f"Number: {i}")
  print(f"List: {lst}")
  print("") 

Number: 1
List: [0, 8, 4, 5, 0]

Number: 2
List: [3, 4, 6, 2, 1]

Number: 3
List: [9, 6, 5, 9, 9]


[Program finished]

答案 5 :(得分:-1)

我认为这是解决这个问题的合适方法。

import random

y = []

def autoSolve():
    x = []
    for i in range(5):
        z = random.randrange(1, 10)
        x.append(z)
    y.append(x)
    print(y, end="")

 for i in range(3):
    print("number", i + 1,)
    autoSolve()
    print()

此处输出将生成此[[],[],[]]格式 包含3个元素的内部列表的列表