6 回答

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))

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']

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)

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 或任何特定的編程語言。

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(",")
只有一個字符)。,

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)丑陋且難以閱讀。
添加回答
舉報(bào)