2

我想从两个列表中生成一个可能的网站列表:

strings = ["string1", "string2", "string3"]
tlds = ["com', "net", "org"]

产生以下输出:

string1.com  
string1.net  
string1.org  
string2.com  
string2.net  
string2.org 

我必须这样做:

for i in strings:
    print i + tlds[0:]

但我不能连接 str 和 list 对象。我怎样才能加入这些?

4

4 回答 4

13

itertools.product是为此目的而设计的。

url_tuples = itertools.product(strings, tlds)
urls = ['.'.join(url_tuple) for url_tuple in url_tuples]
print(urls)
于 2013-07-28T20:44:31.913 回答
7

(嵌套)列表理解将是另一种选择:

[s + '.' + tld for s in strings for tld in tlds]
于 2013-07-28T21:07:37.660 回答
5

itertools模块提供了执行此操作的功能。

from itertools import product
urls = [".".join(elem) for elem in product(strings, tlds)]

urls变量现在包含此列表:

['string1.com',
 'string1.net',
 'string1.org',
 'string2.com',
 'string2.net',
 'string2.org',
 'string3.com',
 'string3.net',
 'string3.org']
于 2013-07-28T20:45:23.213 回答
2

一种非常简单的编写方法与大多数其他语言相同。

for s in strings:
    for t in tlds:
        print s + '.' + t
于 2013-07-28T21:15:01.823 回答