目录
Check if two strings have the same characters in Python
检查两个字符串在 Python 中是否具有相同的字符
检查两个字符串是否具有相同的字符:
- 使用该
sorted()
函数对两个字符串进行排序。 - 使用相等运算符比较结果。
- 如果比较结果为
True
,则两个字符串具有相同的字符。
主程序
def have_same_characters(str1, str2): return sorted(str1) == sorted(str2) print(have_same_characters('bob', 'obb')) # 👉️ True print(have_same_characters('bob', 'obbb')) # 👉️ False print(have_same_characters('bob', 'abc')) # 👉️ False
sorted函数接受一个可迭代对象,并从可迭代对象中的项目返回一个新的排序列表。
主程序
print(sorted('bob')) # 👉️ ['b', 'b', 'o'] print(sorted('obb')) # 👉️ ['b', 'b', 'o']
如果两个字符串具有相同的长度并且包含相同的字符,则比较结果为
True
。我们在比较之前对字符进行排序,因此字符串中字符的顺序并不重要。
True
仅当两个字符串包含相同字符且长度相同时,代码示例中的函数才会返回。
for
使用循环检查两个字符串是否具有相同的字符
如果你需要检查两个字符串是否有相同的字符,而不考虑字符串的长度和每个字符出现的频率,使用循环for
。
主程序
def have_same_characters(str1, str2): for char in str1: if not char in str2: return False return True print(have_same_characters('bob', 'obb')) # 👉️ True print(have_same_characters('bob', 'obbbb')) # 👉️ True print(have_same_characters('abc', 'aabbcc')) # 👉️ True print(have_same_characters('bob', 'abc')) # 👉️ False
我们使用for
循环来迭代其中一个字符串。
在每次迭代中,我们检查当前字符是否包含在另一个字符串中。
如果不满足条件,我们会False
立即从函数返回。
如果字符串中的所有字符都满足条件,则函数返回
True
。
这种方法只检查字符串 A 中的所有字符是否都包含在字符串 B 中。
为了满足条件,两个字符串不必具有相同的长度。
使用 collections.Counter 检查两个字符串是否具有相同的字符
您还可以使用该类collections.Counter
来检查两个字符串是否具有相同的字符。
主程序
from collections import Counter str_1 = 'bob' str_2 = 'obb' if Counter(str_1) == Counter(str_2): # 👇️ this runs print('The strings have the same characters') else: print('The strings do NOT have the same characters')
模块中的 Counter
类是
collections
该类的子类dict
。
该类基本上是键数对的映射。
主程序
from collections import Counter str_1 = 'bob' str_2 = 'obb' print(Counter(str_1)) # Counter({'b': 2, 'o': 1}) print(Counter(str_2)) # Counter({'b': 2, 'o': 1})
如果Counter
对象包含相同的键数对,则两个字符串包含相同的字符。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: