将项目存储在python的列表中

时间:2014-09-09 01:17:17

标签: python list variables random store

我是python的新手,想问一个简单的问题。

我试图让这个程序循环,每次循环时,都应该在列表中存储一个变量。

请帮忙

到目前为止,这是我的代码:

import random
for x in range(1,100):
    q=random.randint(0,99)
    w=random.randint(0,99)
    e=q*w
    q=[]#This is the list
    print '%s * %s = %s'%(q,w,e)

3 个答案:

答案 0 :(得分:3)

您需要在循环外部定义列表,并在循环内追加它。

import random

# Define your list
l = []
for x in range(1,100):
    q=random.randint(0,99)
    w=random.randint(0,99)
    e=q*w
    # Append the result to your list
    l.append(e)
    print '%s * %s = %s'%(q,w,e)

print 'The list becomes: %s' % l

答案 1 :(得分:0)

让我们逐行完成您的代码行

import random

for x in range(1,100):        # this will go 1, 2, ... , 99
    q = random.randint(0, 99) # q is a random number 0-99
    w = random.randint(0, 99) # w is a random number 0-99
    e = q * w                 # e is q times w
    q = []                    # q is now an empty list
    print '%s * %s = %s' % (q,w,e)
                              # q is an empty list, so this is wrong

显然,您并不是每次都尝试将q分配给空列表。您需要在循环之前创建一个列表,然后继续添加它。

some_list = []                # some_list is an empty list
for _ in range(99):           # this will go 0, 1, ... , 98
    q = random.randint(0, 99) # q is a random number 0-99
    w = random.randint(0, 99) # w is a random number 0-99
    e = q * w                 # e is q times w
    some_list.append(e)       # add e to the list!
    print "%s * %s = %s" % (q,w,e)
                              # print "q * w = e"

请注意,当你获得更高级的时候,你可以将它作为列表理解很好地包装起来,这样你就不必将它初始化为空,然后加入它。

some_list = [random.randint(0,99) * random.randint(0,99) for _ in range(99)]
# equivalent to your code

但这仍然有点超过你的舒适程度。一步一步来! :)

这里需要注意的是我改变了:

  • range是半开放范围,例如range(1,100)是99个数字,1-99。它不包括100。
  • 你实际上并没有使用你范围内的任何数字,你只想多次运行你的循环。对此的常见习语是for _ in range(some_number)。您使用下划线(_)向其他编码器表示您不在此处使用该变量(请注意_并不代表Python的任何特殊内容,这只是惯例)
  • for _ in range(N)N次做事的快捷方式。
  • list.append添加到列表=)

答案 2 :(得分:0)

关于风格的一些注释:

  1. for循环中不定义列表,在这种情况下q=[],如果您希望它存储值,则可以循环for循环的几次迭代。
  2. 不要使用相同的名称来定义循环内的多个对象,q在这种情况下用于存储随机数和列表。
  3. 添加到列表的方法:

    1. 使用append()对象的list函数向list
    2. 附加值
    3. 重载+运算符以将新值连接到原始列表
    4. 所以,以下是我将如何更改您的代码:

      1. 首先在循环外定义列表:

        import random
        e = []
        
      2. 在for循环中,使用append()函数将值添加到主列表e

        for x in range(0,100):
            q=random.randint(0,99)
            w=random.randint(0,99)
            e_val=q*w    # new local variable that resets at each iteration of the loop
            e.append(e_val)
            print '%s * %s = %s'%(q,w,e_val)
        
      3. 或者,您可以使用以下内容替换行e.append(e_val)

        e += [e_val]