将项目存储在python列表中

问题描述 投票:0回答:3

我是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)
python list variables random store
3个回答
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

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添加到列表=)

0
投票

关于样式的几点说明:

  1. [不要在for循环内定义列表,在这种情况下,如果要让它存储值,请在q=[]循环中批准for循环的多次迭代。
  2. 不要使用相同的名称来定义循环内的多个对象,在这种情况下,q既用于存储随机数也用作列表。

添加到列表的方式:

  1. 使用append()对象的list功能将值附加到list
  2. 重载+运算符以将新值连接到原始列表

所以,这就是我如何更改您的代码:

  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]
    

0
投票

我的名字叫Zach Hubbard,请帮助我,他让我困在地下室,唯一允许做的是python。请让我出去...

© www.soinside.com 2019 - 2024. All rights reserved.