如果我有一個字符串數組,我可以檢查一個字符串是否在數組中而不執行for
循環嗎?具體來說,我正在尋找一種方式來的if
語句中做到這一點,所以是這樣的:檢查項目是否在數組/列表
if [check that item is in array]:
如果我有一個字符串數組,我可以檢查一個字符串是否在數組中而不執行for
循環嗎?具體來說,我正在尋找一種方式來的if
語句中做到這一點,所以是這樣的:檢查項目是否在數組/列表
if [check that item is in array]:
假設你的意思是「清單」裏你說「陣列」,你可以做
if item in my_list:
# whatever
......就是這樣嗎?我一直在谷歌搜索20分鐘.... – SomeKittens
@SomeKittens:列表將在內部做自己的循環來測試成員資格。 – jdi
@jdi,並且該循環運行速度比Python中顯式編碼的循環快得多,更不用說更易於閱讀了。 –
當你說「數組」時,我還會假定你的意思是「列表」。 Sven Marnach的解決方案很好。如果您要對列表進行重複檢查,則可能需要將其轉換爲集合或凍結集合,對於每個檢查來說可以更快。假設你的STR的列表被稱爲subjects
:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever
您也可以使用相同的語法的數組。例如,在Pandas系列內搜索:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff
使用lambda函數。
比方說,你有一個數組:
nums = [0,1,5]
檢查是否5是nums
:
(len(filter (lambda x : x == 5, nums)) > 0)
該解決方案更強勁。您現在可以檢查是否有任何數字滿足條件在您的數組nums
中。
例如,檢查在nums
是否存在任何數目大於或等於5:
(len(filter (lambda x : x >= 5, nums)) > 0)
你必須使用.values爲陣列。 例如說你有數據幀具有列名即測試[「名稱」],你可以爲你不正常的名單做
if name in test['Name'].values :
print(name)
必須使用.values
我認爲這個問題是已經回答[這裏](http://stackoverflow.com/questions/9542738/python-find-in-list) –
或更好的這裏:http://stackoverflow.com/questions/12934190/is-there-a-short -contains-function-for-lists – torina
可能的重複[檢查列表中是否存在值的最快方法](https://stackoverflow.com/questions/7571635/fastest-way-to-check-if-a-存在於列表中的值) –