你為什麼不換個角度想想。你可以把每一次都對映成乙個dict:import re
from collections import defaultdict
regex = re.compile('([a-z]+\-)\d(\-[a-z]+)')
t = ["asdf-1-bhd","uuu-2-ggg","asdf-2-bhd","uuu-1-ggg","asdf-3-bhd"]
maps = defaultdict(list)
for x in t:
parts = regex.match(x).groups()
輸出:^$
這真的很快,因為你不必比較一件事和另一件事。在
以不同的方式思考
您最初的方法是迭代每個項並將它們彼此比較。這是過於複雜和不必要的。在
讓我們考慮一下我的**是做什麼的。首先它得到了精簡版:"asdf-1-bhd" -> "asdf bhd"
"uuu-2-ggg" -> "uuu ggg"
"asdf-2-bhd" -> "asdf bhd"
"uuu-1-ggg" -> "uuu ggg"
"asdf-3-bhd" -> "asdf bhd"
您已經可以開始檢視組,而我們還沒有比較任何內容!在
我們現在做一種反向對映。我們把右邊的所有東西都作為乙個鍵,把左邊的任何東西都放到乙個列表中,這個列表由左邊的值對映:'asdf bhd' -> ['asdf-1-bhd', 'asdf-2-bhd', 'asdf-3-bhd']
'uuu ggg' -> ['uuu-2-ggg', 'uuu-1-ggg']
在這裡,我們有我們的組由它們的共同計算值(key)定義。這將適用於任何數量的元素和組。在
python拆分列表 Python列表及其拆分
僅使用字串操作似乎是最簡單的 當然這是主觀的 和最快的 與迄今為止發布的其他解決方案相比,差距很大 a a b c d y z join a split a b c d y z 證明 基準 h3 按經過時間的公升序排序 python mtimeit s a a b x y p q 99 join a...
Python按條件刪除巢狀列表中的元素
今日在做深度學習過程中,資料採集的時候,因為粗心,coding有乙個小bug沒有看出,但是不影響資料採集。又因為資料採集量比較大,索性就按照出錯的方式,直接寫指令碼對資料進行處理,將bug抵消掉。思路 1 for迴圈遍歷,找出符合條件的元素,並將元素賦值成不會出現的資料,並做好count計數 2 再...
Python每日一記120 按條件篩選列表元素
關於條件列表中進行條件篩選元素,最近開始我們使用的方法是for迴圈,把滿足條件的裝進乙個列表,但是這樣不簡潔,且速度慢。那麼我們其實可以使用列表解析和filter函式 import pandas as pd import numpy as np import re import time from ...