用于检查所有字符串是否相互不相交的 Python 程序
pythonserver side programmingprogramming
字符串是一种数据结构,它保存用双引号或单引号括起来的数据,即引号内的任何数据类型都被视为字符串。它是不可变的,一旦我们定义了数据,我们就不能更改或修改。在 Python 中,我们有一个名为 str() 的函数,它将任何数据作为输入并返回字符串作为输出。
相互不相交意味着没有两个字符串具有相同的元素。有多种不同的方法来检查所有字符串是否相互不相交。让我们逐一介绍一下。
使用嵌套循环
嵌套循环是一种与循环相关的方法,它在主循环内创建另一个循环。
示例
在此示例中,我们创建嵌套循环来检查字符串中的每个元素,如果字符串相互不相交,则返回 True 输出,否则返回 False 输出。以下是检查字符串是否相互不相交的示例。
def are_disjoint(strings): for i in range(len(strings)): for j in range(i + 1, len(strings)): if set(strings[i]) & set(strings[j]): return False return True my_strings = ["Welcome", "to tutorialspoint", "Happy", "Learning"] if are_disjoint(my_strings): print("所有字符串都是相互不相交的。") else: print("字符串不是相互不相交的。")
输出
字符串不是相互不相交的。
使用 any() 函数
在 Python 中,我们有一个称为 any() 的函数,如果可迭代对象中的任何元素为 True,则返回 True,否则返回 False,即如果任何元素与另一个字符串中的元素相同,则返回 True,否则返回 False。
示例
在此示例中,我们将字符串作为输入参数传递给 any() 函数,并检查是否有任何字符串相似,然后返回 True 或 False 的输出。
def are_disjoint(strings): return not any(set(strings[i]) & set(strings[j]) for i in range(len(strings)) for j in range(i + 1, len(strings))) my_strings = ["hello", "world", "python"] if are_disjoint(my_strings): print("所有字符串都是相互不相交的。") else: print("字符串不是相互不相交的。")
输出
字符串不是相互不相交的。
使用 all() 函数
python 中可用的另一个函数是 all() 函数,如果所有可迭代项都为 True,则返回 True,否则返回 False。
示例
在此示例中,我们将遍历字符串并检查每对字符串之间是否有任何共同字符。如果找到共同字符,则函数返回 False,表示字符串不是相互不相交的。如果没有找到共同字符,则函数返回 True。
def are_disjoint(strings): return all(not set(strings[i]).intersection(*map(set, strings[:i] + strings[i+1:])) for i in range(len(strings))) my_strings = ["hello", "world", "python"] if are_disjoint(my_strings): print("所有字符串都是相互不相交的。") else: print("字符串不是相互不相交的。")
输出
字符串不是相互不相交的。