📜  Python|字符串元素的笛卡尔积

📅  最后修改于: 2022-05-13 01:55:28.851000             🧑  作者: Mango

Python|字符串元素的笛卡尔积

有时,在使用Python字符串时,我们可能会遇到字符串中的数据是逗号或任何分隔符分隔的问题。我们可能想用其他类似的字符串执行笛卡尔积来获得所有可能的数据对。让我们讨论可以执行此任务的某些方式。

方法 #1:使用列表理解 + split()
可以使用列表推导来执行此任务。在此,我们使用 split() 执行提取单个元素的任务。列表理解的任务是形成对。

# Python3 code to demonstrate working of 
# Cartesian product of string elements
# Using split() + list comprehension
  
# initializing strings
test_str1 = "gfg, is, best"
test_str2 = "for, all, geeks"
  
# printing original strings
print("The original string 1 is : " + test_str1)
print("The original string 2 is : " + test_str2)
  
# Cartesian product of string elements
# Using split() + list comprehension
res = [sub1 + sub2 for sub1 in test_str1.split(", ") for sub2 in test_str2.split(", ")]
                      
# printing result 
print("Cartesian product list : " + str(res)) 
输出 :
The original string 1 is : gfg, is, best
The original string 2 is : for, all, geeks
Cartesian product list : ['gfgfor', 'gfgall', 'gfggeeks', 'isfor', 'isall', 'isgeeks', 'bestfor', 'bestall', 'bestgeeks']

方法 #2:使用列表理解 + product()
上述功能的组合可用于执行此任务。在此,我们使用 product() 代替嵌套推导来执行配对任务。

# Python3 code to demonstrate working of 
# Cartesian product of string elements
# Using product() + list comprehension
from itertools import product
  
# initializing strings
test_str1 = "gfg, is, best"
test_str2 = "for, all, geeks"
  
# printing original strings
print("The original string 1 is : " + test_str1)
print("The original string 2 is : " + test_str2)
  
# Cartesian product of string elements
# Using product() + list comprehension
res = [sub1 + sub2 for sub1, sub2 in product(test_str1.split(", "), test_str2.split(", "))]
                      
# printing result 
print("Cartesian product list : " + str(res)) 
输出 :
The original string 1 is : gfg, is, best
The original string 2 is : for, all, geeks
Cartesian product list : ['gfgfor', 'gfgall', 'gfggeeks', 'isfor', 'isall', 'isgeeks', 'bestfor', 'bestall', 'bestgeeks']