Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中嵌套for循环的替代方法_Python_Performance_For Loop_Nested - Fatal编程技术网

python中嵌套for循环的替代方法

python中嵌套for循环的替代方法,python,performance,for-loop,nested,Python,Performance,For Loop,Nested,我正在处理实体列表的笛卡尔乘积 For e.g. a_list = ['a','b'] 预期产出为: "a";"a"&"a";"b"&"b";"a"&"b";"b" 实体对中的每个实体用分号“;”分隔,每个实体对用“&”分隔 我使用以下嵌套for循环来实现输出 entity_set = ['a','b'] domain_text = '' count = 0 for entity1 in entity_set: for entity2 in entity_s

我正在处理实体列表的笛卡尔乘积

For e.g. a_list = ['a','b']
预期产出为:

"a";"a"&"a";"b"&"b";"a"&"b";"b"
实体对中的每个实体用分号“;”分隔,每个实体对用“&”分隔

我使用以下嵌套for循环来实现输出

entity_set = ['a','b']

domain_text = ''
count = 0
for entity1 in entity_set:
    for entity2 in entity_set:
        count += 1
        domain_text += '"' + entity1 + '"' + ';' + '"' + entity2 + '"'
        if count < (len(entity_set)*len(entity_set)):
            domain_text += '&'
print domain_text
entity_set=['a','b']
域_文本=“”
计数=0
对于实体集合中的实体1:
对于实体集合中的实体2:
计数+=1
域文本+=''''''''+entity1+''''+';'+'“'+entity2+'”
如果计数<(len(实体集合)*len(实体集合)):
域_text+='&'
打印域文本
但是,随着_列表的大小增加到数千个实体,过程变得太慢

For e.g. a_list = ['a','b']

有什么优雅的解决方案可以替代使用吗?

当然可以
itertools.product()
可以为您生成产品,然后字符串连接操作可以有效地将所有片段粘贴在一起(这很可能是懒惰的真正根源:一次递增地构建一个小片段的结果字符串)

然后,
结果
打印为

"a";"a"&"a";"b"&"b";"a"&"b";"b"

您基本上已经重新实现了
itertools.product(entity\u set,repeat=2)
。通过使用f字符串,您将获得轻微的性能提升,但仍然是O(n**2)。这非常接近。使用itertools.product生成列表,然后添加将每个列表与其符号进行连接的步骤。是否应标记为重复?