Search code examples
pythonf-string

Generate a list of urls with two f-string substitutions in Python


I am trying to generate a list of urls by looping two word lists. I can do it one through f-string but I am not so sure how to do two at the same time. Any suggestion?

tag_names = ['business', 'science', 'technology']
domain_names = ['bbc', 'cnn', 'nytimes']

for domain in domain_names:
    print(f'www.{domain}.com/{tag}')

Expected result

www.bbc.com/business
www.bbc.com/science
www.bbc.com/technology
www.cnn.com/business
www.cnn.com/science
www.cnn.com/technology
www.nytimes.com/business
www.nytimes.com/science
www.nytimes.com/technology

Solution

  • You can use itertools.product and a list comprehension:

    import itertools
    
    tag_names = ['business', 'science', 'technology']
    domain_names = ['bbc', 'cnn', 'nytimes']
    
    [f'www.{domain}.com/{tag}' for domain, tag in itertools.product(domain_names, tag_names)]
    

    output:

    ['www.bbc.com/business',
     'www.bbc.com/science',
     'www.bbc.com/technology',
     'www.cnn.com/business',
     'www.cnn.com/science',
     'www.cnn.com/technology',
     'www.nytimes.com/business',
     'www.nytimes.com/science',
     'www.nytimes.com/technology']