簡體   English   中英

匹配Python中數組的長度

[英]Match length of arrays in Python

網上有一些示例如何從較長的數組中減去值,使其與較短的數組的長度相匹配( 示例)。 但是,較長數組中值的順序會發生變化。 有沒有辦法從較長數組的末尾減去值?

這就是我想要實現的目標:

a = [1, 2, 3, 4, 5]
b = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]

一些代碼

輸出:

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

無論數組的大小或順序如何,這都應該有效:

a = [1, 2, 3, 4, 5]
b = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]

m = min(len(a), len(b))
a = a[:m]
b = b[:m]

只需獲取從索引 0 到len(a)-1的列表切片:

b = b[:len(a)]

輸出:

>>> a = [1, 2, 3, 4, 5]
>>> b = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]
>>> b = b[:len(a)]
>>> b
[1, 5, 8, 2, 7]

如果a大於b

>>> a = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]
>>> b = [1, 2, 3, 4, 5]
>>> b = b[:len(a)]
>>> b
[1, 2, 3, 4, 5]

請注意,如果切片的結束索引大於列表的大小,則不會出現錯誤。

因此,如果您不知道較短的數組是什么,只需對它們執行切片:

b = b[:len(a)]
a = a[:len(b)]

只有較大的才會“縮短”。

將任意數量的列表剪切成相等的長度:

def even_length(*args):
    target_size = min(map(len, args))
    return tuple(l[:target_size] for l in args)

用法:

a = [1, 2, 3, 4, 5]
b = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]

a, b = even_length(a, b)
print(a, b)

當然,如果處理單個列表變得不方便,您也可以傳遞listlist tuple

lists = (a, b, c, d)
lists = even_length(*lists)

在線上有一些示例,如何從較長的數組中減去值,使其與較短的數組的長度匹配( 示例)。 但是,較長數組中的值順序會更改。 有沒有一種方法可以從較長數組的末尾減去值?

這是我要實現的目標:

a = [1, 2, 3, 4, 5]
b = [1, 5, 8, 2, 7, 3, 5, 9, 4, 10]

一些代碼

輸出:

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

暫無
暫無

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

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