簡體   English   中英

Python:在索引列表中獲取項目

[英]Python: Get item(s) at index list

我想寫一些東西,它需要一個列表,並在一個或多個索引處獲取項目。

當我有多個索引時,我在另一篇文章中找到的下面的示例效果很好。 如果 b = 單個索引,則此示例不起作用。

a = [-2,1,5,3,8,5,6]
b = [1,2,5] 
c = [ a[i] for i in b]

我如何讓它與 1 和多個索引一起使用? 例子:

a = [-2,1,5,3,8,5,6]
b = 2 
c = [ a[i] for i in b] doesnt work in this case

您實際上可以檢查您嘗試用於獲取索引的類型是否是列表(或元組等)。 在這里,包裝成 function:

def find_values(in_list, ind):
    # ind is a list of numbers
    if isinstance(ind, list):
        return [in_list[i] for i in ind]
    else:
        # ind is a single numer
        return [in_list[ind]]

in_list = [-2,1,5,3,8,5,6]
list_of_indices = [1,2,5]
one_index = 3

print(find_values(in_list, list_of_indices))
print(find_values(in_list, one_index))

function 采用輸入列表和索引(為清楚起見重命名 - 最好避免使用單字母名稱)。 索引可以是列表或單個數字。 如果isinstance確定您的輸入是一個列表,它會繼續進行列表理解。 如果它是一個數字 - 它只是將其視為一個索引。 如果是其他任何東西,程序就會崩潰。

這篇文章為您提供了有關isinstance和識別其他可迭代對象的更多詳細信息,例如元組或列表和元組。

您可以創建一個單獨的 3 行代碼來打印出列表 a 和 b 的重疊交集,而不是創建一個手動驗證列表 a 中列表 b 的值的列表:

a = [-2,1,5,3,8,5,6]
b = [3,4,6] 

for i in range(0,len(b)):
    if b[i] in a:
        print(b[i])

通過這樣做,即使列表 b 中存儲了 1 個值甚至沒有值,您也可以打印出重疊交集。

a = [-2, 1, 5, 3, 8, 5, 6]
a2 = [-2]
b = [1, 2, 5]
b2 = [1]
c = [a[i] for i in b]
c2 = [a2[i-1] for i in b2]

列表的第一項是 0,有一項的列表是完全有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM