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']]
結論
如果您在本教程中有任何疑問,請在評論區中提出。
廣告