繁体   English   中英

从for循环返回的元素中追加新列表

[英]Append a new list from a for loops returned elements

将gamepk附加到新列表以设置和删除重复项时遇到问题。 我的第一个问题是列出新清单。 我稍后会担心。

import csv
import requests
import datetime
from pprint import pprint
import pendulum

start = pendulum.datetime(2016, 4, 3)
end = pendulum.datetime(2016, 10, 2)
period = pendulum.period(start, end)

for dt in period.range('days'):
    day = dt.format('DD')
    month = dt.format('MM')
    year = dt.format('YYYY')
    the_date = str(month) + "/" + str(day) + "/" + str(year)

    try:
        req = requests.get('http://gd.mlb.com/components/game/mlb/year_' + str(year) + '/month_' + str(month) + '/day_' + str(day) + '/miniscoreboard.json') # 
        get_gameIds = req.json()['data']['games']['game']

        for gameId in get_gameIds:
            gamepk = gameId['game_pk']
            new_gamepk = []
            for pk in gamepk:                
                new_gamepk.append(pk)
                print(new_gamepk)

在倒数第二个for循环之后打印gamepk会得到如下列表:

446877
452866
446911
446873
446870
446875
446872
446876
446867
446874
446879
446871

我觉得我应该将gamepk结果存储为列表..但我不确定。 我所试图做的是那么所有这些gamepks的追加,我就可以调用一个新的列表set上,并删除重复的。 我了解附加的概念,但显然似乎无法使其正常工作。 任何帮助和简短说明都将走很长一段路!

通常,此想法是:

  • 在最外层循环之外初始化一个空集合(列表,集合)
  • 找到所需项目后,将其添加到集合中。

使用清单

import csv
import requests
import datetime
from pprint import pprint
import pendulum

start = pendulum.datetime(2016, 4, 3)
end = pendulum.datetime(2016, 10, 2)
period = pendulum.period(start, end)

gamepks = []
for dt in period.range('days'):
    day = dt.format('DD')
    month = dt.format('MM')
    year = dt.format('YYYY')
    the_date = str(month) + "/" + str(day) + "/" + str(year)

    try:
        req = requests.get('http://gd.mlb.com/components/game/mlb/year_' + str(year) + '/month_' + str(month) + '/day_' + str(day) + '/miniscoreboard.json') # 
        get_gameIds = req.json()['data']['games']['game']

        for gameId in get_gameIds:
            gamepk = gameId['game_pk']
            gamepks.append(gamepk)

使用一套

import csv
import requests
import datetime
from pprint import pprint
import pendulum

start = pendulum.datetime(2016, 4, 3)
end = pendulum.datetime(2016, 10, 2)
period = pendulum.period(start, end)

gamepks = set()
for dt in period.range('days'):
    day = dt.format('DD')
    month = dt.format('MM')
    year = dt.format('YYYY')
    the_date = str(month) + "/" + str(day) + "/" + str(year)

    try:
        req = requests.get('http://gd.mlb.com/components/game/mlb/year_' + str(year) + '/month_' + str(month) + '/day_' + str(day) + '/miniscoreboard.json') # 
        get_gameIds = req.json()['data']['games']['game']

        for gameId in get_gameIds:
            gamepk = gameId['game_pk']
            gamepks.add(gamepk)

了解作用域很重要。 一旦循环退出,在内部作用域内部声明的变量(例如,在for循环内部)将“消失”。 这可能会帮助您指导在循环结束后应在何处初始化要保留的变量(在这种情况下为列表/集)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM