[英]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)
當然,如果處理單個列表變得不方便,您也可以傳遞list
或list
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.