在本教程中,我们将编写一个将所有字谜分组到一个列表中的程序。首先,让我们看看什么是字谜。
具有相同字符但顺序不同的任何两个字符串称为七字组。
在深入探讨解决方案之前,让我们看一个示例。
['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac']
输出结果
[['cat', 'tac'], ['dog', 'god'], ['fried', 'fired'], ['pat', 'tap']]
我们将把问题分解为两部分。首先,我们将编写一个检查两个字符串是否为字谜的函数。请按照以下步骤编写代码以检查字谜。
初始化字符串。
对两个字符串进行排序。
如果两个排序的字符串相等,则返回True,否则返回False。
# simple lambda function to check whether two strings are anagrams or not are_anagrams = lambda x, y: str(sorted(x.lower())) == str(sorted(y.lower())) # calling the function print(are_anagrams('cat', 'tac')) print(are_anagrams('cat', 'Tac')) print(are_anagrams('cat', 'dog'))
输出结果
如果运行上面的代码,则将得到以下结果。
True True False
现在,我们知道如何检查两个字符串是否为字谜。但是,这还不足以解决我们的问题。我们需要将列表中的所有字谜分组(存储)为子列表。
我们如何解决这个问题?
最好的做法是使用字典对元素进行分组。我们将有一个用于相关字谜的单键。如果您是Python的新手,这会让人感到困惑。让我们看看实现我们想要的步骤。
初始化字符串列表。
初始化一个空字典。
遍历列表。
如果它存在于字典中,则将字符串附加到其列表中。
排序字符串。
检查字典中是否存在它。
否则,使用包含当前字符串的列表来初始化键,以存储字谜。
在列表中打印字典的所有值。
# initialzing a list of strings anagrams = ['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac'] # initializing an empty dict grouped_anagrams = {} # iterating over the list to group all anagrams for string in anagrams: # sorting the string sorted_string = str(sorted(string)) # checking the string in dict if sorted_string in grouped_anagrams: # adding the string to the group anagrams grouped_anagrams[sorted_string].append(string) else: # initializing a list with current string grouped_anagrams[sorted_string] = [string] # printing the values of the dict (anagram groups) print(list(grouped_anagrams.values()))
输出结果
如果运行上面的代码,则将得到以下结果。
[['dog', 'god'], ['pat', 'tap'], ['cat', 'tac'], ['fired', 'fried']]
您也可以使用其他方法解决问题。有一个名为defaultdict的数据结构,可帮助您避免检查字典中的键。您可以浏览它并相应地更改代码。
如果您对本教程有任何疑问,请在评论部分中提及。
本文向大家介绍从Python中的元组列表中找到包含给定元素的元组,包括了从Python中的元组列表中找到包含给定元素的元组的使用技巧和注意事项,需要的朋友参考一下 列表可以将元组作为其元素。在本文中,我们将学习如何识别包含特定搜索元素(字符串)的元组。 有条件 我们可以根据情况设计跟踪。之后,我们可以提及条件或条件组合。 示例 输出结果 运行上面的代码给我们以下结果- 带过滤器 我们将过滤器功能与
本文向大家介绍计算Python列表中包含给定元素的子列表,包括了计算Python列表中包含给定元素的子列表的使用技巧和注意事项,需要的朋友参考一下 给定列表中的元素也可以作为另一个字符串出现在另一个变量中。在本文中,我们将查看给定列表中给定流出现了多少次。 随着范围和镜头 我们使用range和len函数来跟踪列表的长度。然后使用in条件查找字符串在列表中作为元素出现的次数。每当满足条件时,初始化为
我想从给定的比赛列表(如“法国-德国”)中生成可能性的总数。这样,总结果将是3种可能的结果,即本例{主队获胜,他们平局,或客队获胜}。 可能的结果将是3 另一个例子是[‘法国-德国’、‘西班牙-意大利’] 可能的结果数为9 下面是我的代码 列表中项目的输出为 这很好,但随着列表项数的增加,它不起作用。如有任何帮助,请提前感谢:)
问题内容: 我说有Python清单。我也有一个索引列表,例如。如何获取带有索引的元素的列表? 问题答案: 您可以使用 列表推导 来获取该列表: 这等效于: 输出: 注意: 请记住,这是用于访问特定索引中a元素的表示法。
我正在解决在给定大小的组中反转链表的问题,我使用的算法如下: 1) 反转大小k的第一个子列表。反转时,我跟踪下一个节点和上一个节点。将指向下一个节点的指针设为next,将指向前一个节点的指针设为prev 2)head=反向(下一个,k)-递归调用列表的其余部分 3) 返回prev,它是反向列表的新标题 我的代码示例是: 但我的输出只是颠倒了列表的前半部分! 例如:如果我的列表是:98 74 94
本文向大家介绍在Python中给定的嵌套列表中找到具有最大值的子列表,包括了在Python中给定的嵌套列表中找到具有最大值的子列表的使用技巧和注意事项,需要的朋友参考一下 列表可以包含其他列表作为其元素。在本文中,我们等于找到给定列表中存在的具有最大值的子列表。 带有max和lambda max和Lambda函数可以一起使用,以给出具有最大值的子列表。 示例 输出结果 运行上面的代码给我们以下结果