第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查列表中字符串內(nèi)的 2 個值是否不相同

如何檢查列表中字符串內(nèi)的 2 個值是否不相同

婷婷同學(xué)_ 2023-06-13 19:20:05
超級簡單的問題。假設(shè)我在 Python 中有這個列表:variables = ['A1,A1','A2,B2','A1,C2','B3,B3','C4,C4']現(xiàn)在,我只需要保留那些逗號前后的值不同的項(xiàng)目。在這種情況下,輸出將是:result = ['A2,B2','A1,C2']我已經(jīng)有了一個“不太優(yōu)雅”的解決方案:new_list = []for i in range(len(variables)):    j = variables[i].split(",")    if j[0] != j[1].replace(" ", ""):        z = "{},{}".format(j[0], j[1])        new_list.append(z)注意:我必須添加replace以刪除空格,但這并不重要......還有另一種(更好的)方法可以做到這一點(diǎn)嗎?也許正則表達(dá)式?注二:我也嘗試過使用列表理解:lista_differents = ["{},{}".format(j[0], j[1]) for i in range(len(variables)) if j[0] != j[1].replace(" ", "")] 但我仍然需要弄清楚如何添加這條線j = variables[i].split(",")有任何想法嗎?
查看完整描述

6 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個贊

您可以嘗試使用列表理解和set. 您基本上將字符串拆分為 2 個列表,然后查看這 2 個元素的集合是否具有 len > 1,這意味著兩者都是唯一的。

variables = ['A1,A1','A2,B2','A1,C2','B3,B3','C4,C4']

[i for i in variables if len(set(i.split(',')))>1]
['A2,B2', 'A1,C2']

如果您對運(yùn)行時感到困擾,那么請嘗試這種沒有split(','). 這比基準(zhǔn)測試中最快的要快得多。

[i for i in variables if len(set(i))>3]

編輯:添加基準(zhǔn)測試結(jié)果(300000 長度輸入數(shù)組,macbook pro 13)

  • Akshay Sehgal(第一) - 每個循環(huán) 215 毫秒 ± 9.77 毫秒(7 次運(yùn)行的平均值 ± 標(biāo)準(zhǔn)偏差,每次 1 個循環(huán))

  • Akshay Sehgal(第二個) - 每個循環(huán) 136 毫秒 ± 195 μs(7 次運(yùn)行的平均值 ± 標(biāo)準(zhǔn)差,每次 10 次循環(huán))

  • Aviv Yaniv - 每個循環(huán) 468 毫秒 ± 39.4 毫秒(7 次運(yùn)行的平均值 ± 標(biāo)準(zhǔn)偏差,每次 1 個循環(huán))

  • jakub - 252 ms ± 29.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

  • Md. Ashraful Alam - 每個循環(huán) 252 毫秒 ± 29 毫秒(7 次運(yùn)行的平均值 ± 標(biāo)準(zhǔn)偏差,每次 1 個循環(huán))


查看完整回答
反對 回復(fù) 2023-06-13
?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個贊

這是另一種查看唯一字符數(shù)的方法。允許的最大值為 3(即字母、數(shù)字、逗號)。

l?=?['A1,A1','A2,B2','A1,C2','B3,B3','C4,C4'
[i?for?i?in?l?if?len(set(i))?>?3]

輸出:

['A2,B2',?'A1,C2']
查看完整回答
反對 回復(fù) 2023-06-13
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊

variables = ['A1,A1','A2,B2','A1,C2','B3,B3','C4,C4']


result = [a for a in variables if a.split(',')[0]!=a.split(',')[1].replace(" ", "")]


print(result)


查看完整回答
反對 回復(fù) 2023-06-13
?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個贊

這只是一個經(jīng)典問題。一種建議的解決方案是檢查字符串的非平凡旋轉(zhuǎn)。我相信這個問題已經(jīng)在幾次求職面試中被使用過。


[x for x in variables if (x+','+x).find(x, 1, -1) == -1]


Out[183]: ['A2,B2', 'A1,C2']

P/s:這個問題更多的是關(guān)于邏輯/算法,而不是 pandas 或任何特定的編程語言。


查看完整回答
反對 回復(fù) 2023-06-13
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個贊

[v for v in variables if str.__ne__(*v.replace(" ", "").split(","))]

您可以使用該str.__ne__(x1, x2)函數(shù),它等效于x1 != x2. 將*列表解壓縮為單獨(dú)的參數(shù),因此輸出為兩個位置參數(shù)(假設(shè)字符串中.split(",")只有一個字符)。,


查看完整回答
反對 回復(fù) 2023-06-13
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊

通過將項(xiàng)目放入集合中并計(jì)算元素的數(shù)量來檢測項(xiàng)目是否不同是 Python 中由來已久的傳統(tǒng)。

[a?for?a?in?variables?
???if?len(set(a.split(',')))?>?1]

Python 中的另一個習(xí)慣用法是通過迭代僅包含一個元素的列表來在列表推導(dǎo)式中進(jìn)行“賦值”。所以另一種可能的解決方案是:

[a?for?a?in?variables?
???for?pair?in?[a.split(',')]?
???if?pair[0]?!=?pair[1]]

Python 3.8 的海象運(yùn)算符允許您編寫:

[a?for?a?in?variables?
???if?(pair?:=?a.split(','))[0]?!=?pair[1]]

但我認(rèn)為這相當(dāng)丑陋且難以閱讀。


查看完整回答
反對 回復(fù) 2023-06-13
  • 6 回答
  • 0 關(guān)注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號