我正在使用 python 制作控制臺游戲,并且正在使用以下命令檢查專案是否在串列中:
if variable in list:
例如,我想檢查該串列中的哪個變數類似于 list[0]。任何幫助,將不勝感激 :)
uj5u.com熱心網友回復:
使用庫,您可以使用 numpy 的np.where(list == variable). 在 vanilla Python 中,我可以想到類似的東西:
idx = [idx for idx, item in enumerate(list) if item == variable][0]
但是這個解決方案并不是萬無一失的,例如,如果沒有匹配的結果,它就會崩潰。您可以使用if之前的權利完成此操作:
if variable in list:
idx = [idx for idx, item in enumerate(list) if item == variable][0]
else:
idx = None
uj5u.com熱心網友回復:
我了解您希望獲得一個僅包含原始串列中與特定條件匹配的元素的子串列(在您的示例中,您想要提取與串列的第一個元素相等的所有元素)。
您可以通過使用內置過濾器功能來做到這一點,該功能允許您生成一個新串列,其中僅包含與特定條件匹配的元素。
這是一個例子:
a = [1,1,1,3,4]
variable = a[0]
b = list(filter(lambda x : x == variable, a)) # [1,1,1]
uj5u.com熱心網友回復:
此答案假定您僅在串列中搜索一個(第一個)匹配元素。
使用index串列的方法應該是要走的路。您只需將其包裝在try-except陳述句中。這是使用next.
def get_index(data, search):
return next((index for index, value in enumerate(data) if value == search), None)
my_list = list('ABCDEFGH')
print(get_index(my_list, 'C'))
print(get_index(my_list, 'X'))
輸出是
2
None
uj5u.com熱心網友回復:
您可以使用串列類屬性索引執行此操作,如下所示:
list.index(variable)
Index 為您提供一個整數,該整數與您要查找的值的第一次出現的位置相匹配,如果未找到該值,它將引發錯誤。
如果您已經在檢查該值是否在串列中,那么在 if 陳述句中,您可以通過以下方式獲取索引:
if variable in list:
variable_at = list.index(variable)
例子:
foo = ['this','is','not','This','it','is','that','This']
if 'This' in foo:
print(foo.index('This'))
輸出:
3
看看下面的答案,它有更完整的資訊。
查找串列中專案的索引
uj5u.com熱心網友回復:
假設要檢查它是否存在并獲取它的索引,最有效的方法是使用list.index,它回傳找到的第一項索引,否則會引發錯誤,因此可以如下使用:
items = [1,2,3,4,5]
item_index = None
try:
item_index = items.index(3) # look for 3 in the list
except ValueError:
# do item not found logic
print("item not found") # example
else:
# do item found logic knowing item_index
print(items[item_index]) # example, prints 3
也請避免命名變數list,因為它會覆寫內置函式list。
uj5u.com熱心網友回復:
如果您只是想檢查數字是否在串列中并列印它或列印它的索引,您可以簡單地試試這個:
ls = [1,2,3]
num = 2
if num in ls:
# to print the num
print(num)
# to print the index of num
print(ls.index(num))
else:
print('Number not in the list')
uj5u.com熱心網友回復:
animals = ['cat', 'dog', 'rabbit', 'horse']
index = animals.index('dog')
print(index)
uj5u.com熱心網友回復:
我們可能會受到其他語言(例如 Javascript)的啟發,并創建一個函式,如果專案存在則回傳索引,否則回傳 -1。
list_ = [5, 6, 7, 8]
def check_element(alist: list, item: any):
if item in alist:
return alist.index(item)
else:
return -1
用法是
check1 = check_element(list_, 5)
check2 = check_element(list_, 9)
這個是給單線愛好者的
check_element_one_liner = lambda alist, item: alist.index(item) if item in alist else -1
alternative_check1 = check_element_one_liner(list_, 5)
alternative_check2 = check_element_one_liner(list_, 9)
和一個更短的版本:)
check_shorter = lambda a, i: a.index(i) if i in a else -1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516207.html
標籤:Python变量数组列表
