匹配 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]
只需获取从索引 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)]
只有大的才会被“缩短”。
无论数组的大小或顺序如何,这都应该有效:
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]
将任意数量的列表剪切成相等的长度:
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
或 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]
只需获取从索引 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)]
只有大的才会被“缩短”。
无论数组的大小或顺序如何,这都应该有效:
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]
将任意数量的列表剪切成相等的长度:
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
或 tuple
列表。
lists = (a, b, c, d)
lists = even_length(*lists)