迭代列表中的3个项目的每个序列

时间:2018-03-02 17:11:13

标签: python performance list-comprehension

我从包含1007项的服务器收到一个列表。前18项并不重要,但从18项开始的每3项需要以相反的方式组合在一起并除以1000

x = [1,2,3,4,5,..,18,19,20,21,22,23...1007]

从18开始循环,取18,19,20并转换20,19,18将它们绑定在一起201918201918/1000并将此值返回为print(201918/1000)

接下来,使用21,22,23返回print(232221/1000)

执行相同的操作

我不想导出模块,我的应用程序请求了很多处理速度,因为正如你所看到的,该列表中有很多项目,所以"实时和"实时& #34;那些印刷品对我来说可能更好,而且我可以做到尽可能多的光线,我更喜欢。

1 个答案:

答案 0 :(得分:1)

def compress( numbers, offset=18, size=3, divisor=1000):
   numbers = numbers[ offset : ]
   op = []
   for i in range( 0, len( numbers ), size ):
     subnumbers = numbers[ i : i + size ]
     subnumbers = [ ::-1]
     subnumbers = map( str, subnumbers )
     val = float("".join(subnumbers ))
     op.append( val / divisor )
   retuen op

这是如何运作的?

  1. 我们按偏移量对数组进行切片。
  2. 给定大小的反向元素
  3. 转换为字符串
  4. 转换为单个字符串并浮动
  5. 除以结果并将其添加到操作列表
  6. 返回操作列表