创建一个产生“n”列表的for循环(当n = 5时,5个列表,当n = 10时,列表为10个)

时间:2014-05-22 21:22:33

标签: python for-loop

我多次试图这样做但是失败了

尝试1

num = int(input("How many products are you looking at: "))

for i in range(num):
    a="list"+str(i)
    a=[]

尝试2(假设少于26个列表)

num = int(input("How many products are you looking at: "))

alphabet="abcdefghijklmnopqrstuvwxyz"

while(num>0):
    alphabet[0]=[]
    num=num-1
    alphabet=alphabet[1:]

感谢您提供的任何帮助

额外部分:

谢谢,谢谢你的帮助。我有一个最后一步,我需要制作n个矩阵。有没有办法制作任意数量的矩阵,比如5,矩阵标题为matrix1 = ......,matrix2 = .....等等?然后将列表中的矩阵。我一直在使用Python中的numpy,并且知道如何制作矩阵。下面是3x3矩阵。

matrix = numpy.zeros(shape=(3,3))

但是一个矩阵列表给了我一些问题。这是我的尝试。

listOfMatrices=list(map(lambda x:matrix,range(int(num))))

另一种尝试。

[matrix = numpy.zeros(shape=(n,n)) for _ in range(int(n)))]

2 个答案:

答案 0 :(得分:6)

这是list comprehension的一个很好的用例:

[[] for _ in range(int(input("How Many?")))]

这会产生[] - 每次迭代的空列表,但您可以使用任何表达式来构建结果列表。

结果是一个项目列表 - 在这种情况下为空列表:[[], [], ...]

当然,您可以使用迭代中的值,例如:

>>> [["First Element of List {0}".format(i)] for i in range(int(input("How Many?")))]
How Many?5
[['First Element of List 0'], ['First Element of List 1'], 
 ['First Element of List 2'], ['First Element of List 3'], 
 ['First Element of List 4']]

这些列表中的每一个都与任何其他对象一样。如果您将此列表分配给值(items = [... for ... in ...]),那么您可以像访问任何其他项目(items[0])一样访问子列表,并从那里访问子列表的项目({{1} })。

items[0][0]

答案 1 :(得分:0)

list(map(lambda x:list(),range(int(input("How Many?")))))

是一种方式

[[]]*int(input("How Many?")) 

是另一种方式(虽然它可能表现得与你想象的不同)

有很多方法可以做到这一点,最好的方法是通过理解你自己写的那个

python有这些叫做列表推导的东西

[do_something(item) for item in a_list]

会创建一个新的do_something项目列表

现在假装你已经获得了用户输入并且有一个整数

user_input = 5
#you might think the following would work
[do_something(i) for i in user_input] #this will give you an error since ints are not iterable

python可以让你轻松地从一个数字中创建一个列表

 a_list_from_a_number = range( user_input )

现在只需使用所有这些部分来编写自己的程序:)