将列表扩展到一定长度的大多数pythonic方法?

汉斯

我的目标是获取未知数量的元素的列表,并将其扩展/切片为确切的n元素,填充列表太短0而切片列表太长。

例如

n = 10
foo = [1,2,3,4]
print some_func(foo,n) 

应该返回[1,2,3,4,0,0,0,0,0,0],并且

n = 10
foo = [1,2,3,4,5,6,7,8,9,10,11,12]
print some_func(foo,n)

应该回来 [1,2,3,4,5,6,7,8,9,10]


现在我正在这样做:

def some_function(l, n):
    l.extend([0] * n)
    l = l[:n]
    return l

但这似乎效率很低。有没有更Python的方式来做到这一点?


编辑:澄清点,我不试图修改原始数组,我返回的新数组可以是浅表副本。

亨利·基特

这样做的唯一可能的“更多Python式”方法几乎就是您所拥有的方法,但是跳过了额外的变量分配,只是直接返回结果。您也可以通过使用函数名和变量名符合PEP8使其绝对更Python化

除此之外,您可以通过仅添加所需的零来提高效率,而不是构建一个过长的列表然后对其进行修剪。

def pad_or_truncate(some_list, target_len):
    return some_list[:target_len] + [0]*(target_len - len(some_list))

分解起来,这里有两种情况(在琐碎的情况下,输入的长度已经正确就可以了)。列表太长或列表太短。

如果列表太长,我们将其切成薄片。some_list[:target_len]照顾那个。因为切片操作是友好的,所以如果目标长度超出列表的实际长度,则不会中断。

如果列表太短,我们用零填充。我选择通过将列表文字1乘以做到这一点,但是如果您喝的茶更多,则可以使用完全相同的方式使用列表理解2只需确定要添加的零个数(如果列表不太短则为零,或target_len - len(some_list)),然后串联由那么多零组成的列表。做完了!

如果您想使其成为就地操作(如您的原始示例似乎正在尝试但未能实现;请参见@chepner的注释),则只需更改return <...>some_list[:] = <...>


1一些简短的timeit结果表明,文字乘法比列表理解所隐含的两次迭代要快一些。

2对于后代,列表理解版本应类似于:

return some_list[:target_len] + [0 for _ in range(target_len - len(some_list))]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将列表扩展一定长度

来自分类Dev

重新排序重复列表的大多数pythonic方法

来自分类Dev

如果第一个元素是重复项,则从列表中删除元组的大多数pythonic方法

来自分类Dev

将一系列图像拼接在一起的大多数pythonic方法

来自分类Dev

将一系列图像拼接在一起的大多数pythonic方法

来自分类Dev

通过列表值插入有限但任意数量的时间的大多数pythonic方法

来自分类Dev

Python3 帮助确定动态创建列表的大多数 Pythonic 方法

来自分类Dev

将模块中的所有对象作为模块中的名称导入的大多数pythonic方法

来自分类Dev

将字符串转换为八进制数的大多数pythonic方法

来自分类Dev

处理导入函数的大多数pythonic方法将覆盖冲突

来自分类Dev

将特定关键字附加到Dictionary的大多数pythonic方法

来自分类Dev

编写高阶函数的大多数pythonic方法

来自分类Dev

从Shell命令获取输出的大多数pythonic方法

来自分类Dev

除了一个部分,将大多数站点https重定向到http

来自分类Dev

插值/将向量中的值扩展到指定长度

来自分类Dev

大多数pythonic可能会将嵌套列表传递给格式

来自分类Dev

将按钮扩展到div的长度

来自分类Dev

向切片分配单个值的大多数pythonic和/或性能方法?

来自分类Dev

分解高度分支的解析器的大多数pythonic方法

来自分类Dev

格式化字符串的大多数pythonic方法

来自分类Dev

`Itertools.cycle`:采取多个步骤的大多数pythonic方法?

来自分类Dev

将列表扩展到列表

来自分类Dev

将字符串分成一定长度的较小字符串列表

来自分类Dev

从元组列表中选择特定元组的大多数Python方法

来自分类Dev

我如何将div扩展到一定高度,并且仅在滚动之后才扩展?

来自分类Dev

R 将向量扩展到与中心值相同的长度

来自分类Dev

一段时间后杀死线程的大多数Python方法

来自分类Dev

基于公共密钥整理一组 CSV 的大多数 Python ic 方法?

来自分类Dev

装饰一个 python 类,以便大多数方法在条件下引发异常

Related 相关文章

  1. 1

    将列表扩展一定长度

  2. 2

    重新排序重复列表的大多数pythonic方法

  3. 3

    如果第一个元素是重复项,则从列表中删除元组的大多数pythonic方法

  4. 4

    将一系列图像拼接在一起的大多数pythonic方法

  5. 5

    将一系列图像拼接在一起的大多数pythonic方法

  6. 6

    通过列表值插入有限但任意数量的时间的大多数pythonic方法

  7. 7

    Python3 帮助确定动态创建列表的大多数 Pythonic 方法

  8. 8

    将模块中的所有对象作为模块中的名称导入的大多数pythonic方法

  9. 9

    将字符串转换为八进制数的大多数pythonic方法

  10. 10

    处理导入函数的大多数pythonic方法将覆盖冲突

  11. 11

    将特定关键字附加到Dictionary的大多数pythonic方法

  12. 12

    编写高阶函数的大多数pythonic方法

  13. 13

    从Shell命令获取输出的大多数pythonic方法

  14. 14

    除了一个部分,将大多数站点https重定向到http

  15. 15

    插值/将向量中的值扩展到指定长度

  16. 16

    大多数pythonic可能会将嵌套列表传递给格式

  17. 17

    将按钮扩展到div的长度

  18. 18

    向切片分配单个值的大多数pythonic和/或性能方法?

  19. 19

    分解高度分支的解析器的大多数pythonic方法

  20. 20

    格式化字符串的大多数pythonic方法

  21. 21

    `Itertools.cycle`:采取多个步骤的大多数pythonic方法?

  22. 22

    将列表扩展到列表

  23. 23

    将字符串分成一定长度的较小字符串列表

  24. 24

    从元组列表中选择特定元组的大多数Python方法

  25. 25

    我如何将div扩展到一定高度,并且仅在滚动之后才扩展?

  26. 26

    R 将向量扩展到与中心值相同的长度

  27. 27

    一段时间后杀死线程的大多数Python方法

  28. 28

    基于公共密钥整理一组 CSV 的大多数 Python ic 方法?

  29. 29

    装饰一个 python 类,以便大多数方法在条件下引发异常

热门标签

归档