【问题标题】:Iterate using all elements of multiple lists使用多个列表的所有元素进行迭代
【发布时间】:2020-11-18 07:24:23
【问题描述】:

我需要遍历多个列表以在 Python 3.8 中构建一个新的 url 列表

我有这些清单:

days = ['01', '02']
months = ['Jan', 'Feb']
years = ['1990', '1991']
urls = []

我希望输出是:

urls = ['someurl/01_Jan_1990', 'someurl/02_Jan_1990', 'someurl/01_Feb_1990', 'someurl/02_Feb_1990',
'someurl/01_Jan_1991', 'someurl/02_Jan_1991', 'someurl/01_Feb_1991', 'someurl/02_Feb_1991']

我尝试使用zip没有成功:

days = ['01', '02']
months = ['Jan', 'Feb']
years = ['1990', '1991']
urls = []

for day, month, year in zip(days, months, years):
    url = f'someurl/{day}_{month}_{year}'
    urls.append(url)

print(urls)  

输出:

['someurl/01_Jan_1990', 'someurl/02_Feb_1991']

非常感谢您

【问题讨论】:

    标签: python-3.x for-loop


    【解决方案1】:

    您可以在列表理解中使用itertools.product::

    from itertools import product
    
    
    days = ['01', '02']
    months = ['Jan', 'Feb']
    years = ['1990', '1991']
    
    urls = [f"someurl/{u[0]}_{u[1]}_{u[2]}" for u in product(days, months, years)]
    

    或者 f-string f"someurl/{'_'.join(u)}" 也可以工作。

    【讨论】:

      【解决方案2】:
      for day in days:
          for month in months:
              for year in year:
                  url = f'someurl/{day}_{month}_{year}'
                  urls.append(url)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-23
        • 2014-01-02
        • 2019-08-08
        • 1970-01-01
        相关资源
        最近更新 更多