python支持按指定字符串分割成数组_按固定元素数目分割数组- perl,python

要求:把40个元素的数组,按每行8个,分5行打印出来。如下图

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

17 18 19 20 21 22 23 24

25 26 27 28 29 30 31 32

33 34 35 36 37 38 39 40

起因:遇到一些处理数据文件的场景,比如每8行求一次平均值,最大值,或者别的什么操作,可以先抽象为每8行打印到一个数组里,然后直接对该数组处理

1 #!/usr/bin/perl -w

2 usestrict;3

4 my @data = 1..40;5

6 my $window = 8;7

8 for my $loop(0..(@data/$window)-1)9 {10 my @tmp =();11 for my $index (0..($window-1))12 {13 push @tmp, $data[$index + $window * $loop];14 }15 print join("\t", @tmp), "\n";16 }

分析:原理很简单,找到索引的规律,就是了,只是每次不能快速的想起来,特此记录一下。关键是用line8, line13, 找到索引的正确公式。

0+8*0, 1+8*0, ... 7+8*0

0+8*1, 1+8*1, ... 7+8*1

...

0+8*4, 1+8*4, ... 7+8*4

推广:  其他语言也可以按这个思路做

1 #!/usr/bin/python

2

3 data = range(40)4

5 window = 8

6

7 for loop in range(len(data)/window):8 tmp =[]9 for index inrange(window):10 tmp.append(data[index + window *loop])11 #print tmp

12 print "\t".join([str(x) for x in tmp])

不太好的思路:一开始是想到等差数列公式,先求出每行(代表一行数组)的第一个值,后面的根据等差数列公式a1+(n-1)*d,依次求出, 代码有点啰嗦

1 #!/usr/bin/perl -w

2 use strict;3

4 my @data = 1..40;5

6 my $window = 8;7 my $offset = 1;8

9 my @tmp =();10 for my $loop(0..(@data/$window - 1))11 {12 my $first = $data[0] + $loop *$window;13 for my $index(1..$window)14 {15 my $value = $first + ($index - 1) *$offset;16 push @tmp, $value;17 }18 print "@tmp\n";19 @tmp =();20 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值