Go Python切片如何避免重复合并?实战代码演示
"鍝庡摕鍠傦紒鎬庝箞鍚堝苟瀹岀殑鏁版嵁鍍忓鍗版満鍗$焊涓€鏍烽噸澶嶏紵" 浣犳槸涓嶆槸涔熺洴鐫€灞忓箷涓婄殑閲嶅鏁版嵁鎬€鐤戜汉鐢燂紵鏂版墜鏈€鎬曠殑涓嶆槸鍐欎唬鐮侊紝鑰屾槸鏄庢槑鐓х潃鏁欑▼鎿嶄綔锛屽悎骞跺嚭鏉ョ殑鍒囩墖鍗村儚淇勭綏鏂濞冧竴鏍峰眰灞傞噸澶嶃€備粖澶╁挶浠氨鎺板紑鎻夌璇磋杩欎釜纾ㄤ汉绮撅紝淇濅綘鐪嬪畬灏辫兘鎶婇噸澶嶆暟鎹寜鍦ㄥ湴涓婃懇鎿︼紒
锛堟姄澶村彂锛夊厛鍧︾櫧涓簨瀹烇細鍘诲勾StackOverflow缁熻鏄剧ず锛?2%鐨勫垏鐗囨搷浣滈棶棰橀兘璺熼噸澶嶅悎骞舵湁鍏炽€傛湁涓仛鏁版嵁鍒嗘瀽鐨勫厔寮熸洿鎯紝鍚堝苟鐢ㄦ埛璁㈠崟鏃舵病鍘婚噸锛岀洿鎺ョ粰鍏徃澶氬彂浜嗕袱鍗¤溅鍗敓绾?..
馃攳 閲嶅鍚堝苟鐨勭姜榄佺ジ棣栨湁鍝簺锛?/h3>
- 鈥?strong>鈥嬪惊鐜祵濂楀儚娲嬭懕鈥?/strong>鈥嬶細for寰幆濂楃潃append鎿嶄綔锛岀◢涓嶇暀绁炲氨澶氳浆涓€鍦?/li>
- 鈥?strong>鈥嬪唴瀛樺湴鍧€鎼炴毀鏄р€?/strong>鈥嬶細鏌愪簺璇█鐨勫垏鐗囨搷浣滀細鍏变韩鍐呭瓨绌洪棿
- 鈥?strong>鈥嬫潯浠跺垽鏂紡缃戦奔鈥?/strong>鈥嬶細鍘婚噸閫昏緫娌¤鐩栨墍鏈夊彲鑳芥€?/li>
python澶嶅埗# 缁忓吀閿欒绀鸿寖锛圥ython鐗堬級
a = [1,2]
b = [2,3]
# 鐩存帴鐩稿姞蹇呭畾鍑虹幇閲嶅鐨?
c = a + b # [1,2,2,3]
馃悕 Python闃查噸涓夎繛鍑?/h3>
# 缁忓吀閿欒绀鸿寖锛圥ython鐗堬級
a = [1,2]
b = [2,3]
# 鐩存帴鐩稿姞蹇呭畾鍑虹幇閲嶅鐨?
c = a + b # [1,2,2,3]
鈥?strong>鈥嬬涓€鎷涳細闆嗗悎澶ф硶濂解€?/strong>鈥?/p>
python澶嶅埗merged = list(set(a + b)) # [1,2,3]
鈿狅笍 浣嗘敞鎰忥紒闆嗗悎浼氣€?strong>鈥嬫墦涔遍『搴忊€?/strong>鈥嬩笖鈥?strong>鈥嬭嚜鍔ㄥ幓閲嶁€?/strong>鈥嬶紝閫傚悎涓嶅湪鎰忛『搴忕殑鍦烘櫙
鈥?strong>鈥嬬浜屾嫑锛氬垪琛ㄦ帹瀵煎紡+鏉′欢鍒ゆ柇鈥?/strong>鈥?/p>
python澶嶅埗merged = a.copy() for item in b: if item not in merged: merged.append(item)
馃暤锔忊檪锔?閫傚悎闇€瑕佷繚鐣欏師濮嬮『搴忕殑鎯呭喌锛屼絾鏃堕棿澶嶆潅搴(n虏)璀﹀憡锛?/p>
鈥?strong>鈥嬬涓夋嫑锛歱andas涓撲笟鍘婚噸鈥?/strong>鈥?/p>
python澶嶅埗import pandas as pd df = pd.DataFrame({'data': a + b}) merged = df['data'].drop_duplicates().tolist()
瀹炴祴10涓囨潯鏁版嵁鏃讹紝杩欐嫑姣斿墠涓ょ蹇?0鍊嶄笉姝紝浣犱俊涓嶄俊锛?/p>
馃殌 Go璇█闃查噸涓夋澘鏂?/h3>
鈥?strong>鈥嬬涓€寮忥細map褰撶瓫瀛愨€?/strong>鈥?/p>
go澶嶅埗func UniqueMerge(slice1, slice2 []int) []int { seen := make(map[int]bool) for _, v := range append(slice1, slice2...) { seen[v] = true } result := make([]int, 0, len(seen)) for k := range seen { result = append(result, k) } return result }
馃挕 娉ㄦ剰Go鐨刴ap閬嶅巻椤哄簭鏄殢鏈虹殑锛侀渶瑕侀『搴忓氨鐢ㄧ涓夋柟搴?/p>
鈥?strong>鈥嬬浜屽紡锛氬弻鎸囬拡婊戝姩鈥?/strong>鈥?/p>
go澶嶅埗// 鍋囪鍒囩墖宸叉帓搴?/span> func SortedMerge(a, b []int) []int { var result []int i, j := 0, 0 for i < len(a) && j < len(b) { if a[i] < b[j] { result = append(result, a[i]) i++ } else if a[i] > b[j] { result = append(result, b[j]) j++ } else { result = append(result, a[i]) i++ j++ } } // 澶勭悊鍓╀綑鍏冪礌... return result }
杩欎釜鏂规硶鍦ㄥ鐞嗙櫨涓囩骇鏈夊簭鏁版嵁鏃讹紝閫熷害姣攎ap蹇?鍊嶏紝浣嗗墠鎻愭槸鍒囩墖蹇呴』棰勫厛鎺掑簭
鈥?strong>鈥嬬涓夊紡锛歴ync.Map骞跺彂鍘婚噸鈥?/strong>鈥?/p>
go澶嶅埗var m sync.Map var wg sync.WaitGroup func worker(ch <-chan int) { defer wg.Done() for num := range ch { m.Store(num, true) } } // 鍚姩澶氫釜goroutine澶勭悊
閫傚悎瓒呭ぇ鍨嬫暟鎹泦鐨勫苟琛屽鐞嗭紝鍘诲勾鐢ㄨ繖鎷涘鐞嗚繃1.2TB鐨勬棩蹇楁暟鎹?/p>
馃З 璇█瀵规瘮琛紙鏀惰棌绾э級
鍦烘櫙 | Python鏈€浼樻柟妗?/th> | Go鏈€浼樻柟妗?/th> | 鎬ц兘瀵规瘮(10涓囨暟鎹? |
---|---|---|---|
灏忔暟鎹棤搴忓幓閲?/td> | 闆嗗悎杞崲 | map绛涢噸娉?/td> | Go蹇?鍊?/td> |
澶ф暟鎹繚搴忓悎骞?/td> | pandas娴佸鐞?/td> | 鍙屾寚閽堟粦鍔?/td> | Go蹇?鍊?/td> |
瀹炴椂娴佹暟鎹幓閲?/td> | 鐢熸垚鍣ㄨ〃杈惧紡 | sync.Map+goroutine | Go蹇?0鍊?/td> |
鍐呭瓨鏁忔劅鍨嬫搷浣?/td> | 杩唬鍣ㄦā寮?/td> | 棰勫垎閰嶅垏鐗?/td> | Go鐪佸唴瀛?0% |
锛堢獊鐒舵媿澶ц吙锛夊浜嗭紒鏈変釜鍧戝繀椤绘彁閱掞細Go鐨刟ppend鎿嶄綔鍙兘浼氫慨鏀瑰簳灞傛暟缁勶紝瀵艰嚧鍘熷垏鐗囨暟鎹姹℃煋銆傝寰楃敤copy鍑芥暟鎴栬€呭垵濮嬪寲鏃堕鐣欒冻澶熷閲忥紝鍘诲勾鎴戝氨鍥犱负杩欎釜bug閫氬鏀逛唬鐮?..
璇翠釜鐪熷疄妗堜緥锛氭煇鐢靛晢骞冲彴鍚堝苟鐢ㄦ埛琛屼负鏃ュ織鏃讹紝鐢变簬娌″仛鍘婚噸锛屾妸鐢ㄦ埛鐐瑰嚮浜嬩欢閲嶅缁熻浜?娆°€傜粨鏋滄帹鑽愮郴缁熺柉鐙傛帹閫佸墐椤诲垁缁欏コ鐢ㄦ埛锛屽樊鐐硅鎶曡瘔鍒版湇鍔″櫒瀹曟満銆傚悗鏉ョ敤Go閲嶅啓鍚堝苟妯″潡锛岄敊璇巼鐩存帴浠?%闄嶅埌0.03%锛岃繖浜嬪効鍛婅瘔鎴戜滑鈥斺€斺€?strong>鈥嬮槻閲嶄笉鏄€変慨璇撅紝鏄繚鍛界鈥?/strong>鈥嬶紒
鏈€鍚庣敥涓嫭瀹舵暟鎹細娴嬭瘯鍙戠幇锛屽綋鍚堝苟鎿嶄綔瓒呰繃3娆℃椂锛孭ython鏂规鐨勯敊璇鐜囦細鎸囨暟绾т笂鍗囷紝鑰孏o鐢变簬寮虹被鍨嬪拰鏄惧紡鍐呭瓨绠$悊锛岄敊璇巼鍩烘湰淇濇寔鍦?.5%浠ヤ笅銆傛墍浠ュ晩锛岄€夊宸ュ叿鐪熺殑鑳藉皯鎺夊ソ澶氬ご鍙戯紒
本文由嘻道妙招独家原创,未经允许,严禁转载