【问题标题】:Python use 2 lists in 1 loopPython 在 1 个循环中使用 2 个列表
【发布时间】:2015-08-26 04:44:00
【问题描述】:

我有下面的代码,其中包含r3000 列表,这是一个保存为 html 的链接列表。

是否可以使用单独的列表保存不同名称的文件?

例如,r3000 将包含链接 ('http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1'),然后有另一个名为 r3000sym 的列表 ['a','','',...]。然后文件将保存为a.html

import time
import urllib2
from urllib2 import urlopen

r3000 = ['http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-alcoa-inc-aa.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-american-airlines-group-aal.htm?fromsearch=1',
         'http://research.investors.com/quotes/amex-altisource-asset-mgmt-aamc.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-aarons-inc-aan.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-applied-optoelectronics-aaoi.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-a-a-o-n-inc-aaon.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-advance-auto-parts-inc-aap.htm?fromsearch=1']

def yahooKeyStats(stock):
    try:
        site= stock
        hdr = {'User-Agent': 'Mozilla/5.0'}
        req = urllib2.Request(site,headers=hdr)
        page = urllib2.urlopen(req).read()


        dataFile = 'a.html'
        f = open(dataFile,'a')
        f.write(page)
        f.close()

        print 'Done',stock

    except Exception,e:
        print str(e)


for eachStock in r3000:
    yahooKeyStats(eachStock)

【问题讨论】:

  • 听起来你在寻找 zip()。
  • 你可以使用zip()循环遍历两个列表

标签: python


【解决方案1】:

itertools 就是你要找的东西:

import itertools
for it1,it2 in itertools.izip(list1,list2):
    print(it1,it2)

Zip 接受 2 个列表并从中生成元组列表,itertools 允许您同时迭代。

【讨论】:

    【解决方案2】:

    使用二元组将 url 和 name 存储在一个列表中:

    import time
    import urllib2
    from urllib2 import urlopen
    
    r3000 = [
        ('a.html', 'http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1'),
        ('b.html', 'http://research.investors.com/quotes/nyse-alcoa-inc-aa.htm?fromsearch=1'),
    ]
    
    def yahooKeyStats(name, stock):
        try:
            site= stock
            hdr = {'User-Agent': 'Mozilla/5.0'}
            req = urllib2.Request(site,headers=hdr)
            page = urllib2.urlopen(req).read()
    
            with open(name,'a') as f:
                f.write(page)
    
            print 'Done',stock
    
        except Exception,e:
            print str(e)
    
    
    for name, stock in r3000:
        yahooKeyStats(name, stock)
    

    【讨论】:

      【解决方案3】:

      您可能正在寻找 zip() 函数。它基于给定的两个列表创建一个可迭代的元组,您可以将其分配为局部循环变量。见:this post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-26
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 2021-02-23
        相关资源
        最近更新 更多