在本教程中,我们将编写一个程序,该程序将列表中的相似子字符串分组。让我们看一个例子来更清楚地理解它。
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方法组中的所有类似的字符串转换为ITER对象。对于给定的列表,我们用-分割了字符串,并将字符串的第一部分传递给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']]
如果您对本教程有任何疑问,请在评论部分中提及。