Python 列表中相似子字符串的分组
在本教程中,我们将编写一个程序,用于对列表中相似的子字符串进行分组。让我们看一个例子来更清楚地理解它。
输入
strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2', 'javascript-1']
输出
[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ['python-1', 'python-2'], ['javascript-1']]
我们将使用来自 **itertools** 模块的 **groupby** 方法来解决此问题。**groupby** 方法会将所有相似的字符串分组到一个迭代器对象中。对于给定的列表,我们已使用 - 分割字符串,并将字符串的第一部分传递给 **groupby** 方法。
让我们看看解决此问题所涉及的步骤。
- 初始化字符串列表。
- 导入 itertools 模块。
- 初始化一个空列表。
- 现在,将字符串和 lambda 函数传递给 **itertools.groupby** 方法。
- lambda 函数应在使用 − 分割字符串后返回字符串的第一部分。
- **groupby** 方法将返回一个元组列表,其中包含元素及其组。
- 在每次迭代中,将相似元素的组转换为列表。
- 将列表追加到空列表。
- 打印结果。
示例
# importing the itertools module import itertools # initializing the strings strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2', 'javascript-1'] # empty list result = [] # iterator # lambda function will return first part from the string iterator = itertools.groupby(strings, lambda string: string.split('-')[0]) # iterating over the result # element and its group for element, group in iterator: # appending the group by converting it into a list result.append(list(group)) # printing the result print(result)
输出
如果运行以上代码,则将获得以下结果。
[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ython-1', 'python-2'], ['javascript-1']]
结论
如果您在本教程中有任何疑问,请在评论区中提出。
广告