要求:把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行打印到一个数组里,然后直接对该数组处理

 #!/usr/bin/perl -w
use strict; my @data = ..; my $window = ; for my $loop(..(@data/$window)-)
{
my @tmp = ();
for my $index (..($window-))
{
push @tmp, $data[$index + $window * $loop];
}
print join("\t", @tmp), "\n";
}

分析:原理很简单,找到索引的规律,就是了,只是每次不能快速的想起来,特此记录一下。关键是用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

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

 #!/usr/bin/python

 data = range(40)

 window = 8

 for loop in range(len(data)/window):
tmp = []
for index in range(window):
tmp.append(data[index + window * loop])
#print tmp
print "\t".join([str(x) for x in tmp])

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

 #!/usr/bin/perl -w
use strict; my @data = 1..40; my $window = 8;
my $offset = 1; my @tmp = ();
for my $loop(0..(@data/$window - 1))
{
my $first = $data[0] + $loop * $window;
for my $index(1..$window)
{
my $value = $first + ($index - 1) * $offset;
push @tmp, $value;
}
print "@tmp\n";
@tmp = ();
}

按固定元素数目分割数组- perl,python的更多相关文章

  1. split function of Perl,Python,Awk

    使用中常用到Perl,Python,AWK,R, 虽然Java,C,C++,Vala也学过但是就是不喜欢,你说怎么办. 看来一辈子脚本的命. Perl @rray = split /PATTERN/, ...

  2. awk,perl,python的命令行参数处理

    Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性 ...

  3. 用最复杂的方式学会数组(Python实现动态数组)

    Python序列类型 在本博客中,我们将学习探讨Python的各种"序列"类,内置的三大常用数据结构--列表类(list).元组类(tuple)和字符串类(str). 不知道你发现 ...

  4. lintcode 容易题:Partition Array by Odd and Even 奇偶分割数组

    题目: 奇偶分割数组 分割一个整数数组,使得奇数在前偶数在后. 样例 给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]. 挑战 在原数组中完成,不使用额外空间. 解题: 一次快速排序就可 ...

  5. LeetCode——数组篇:659. 分割数组为连续子序列

    659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...

  6. LeetCode 410——分割数组的最大值

    1. 题目 2. 解答 此题目为 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道--最小分割分数. class Solution { public: // 若分割数组的最大值 ...

  7. shell,perl,python的区别

    shell+sed+awk严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成 ...

  8. Java实现 LeetCode 659 分割数组为连续子序列 (哈希)

    659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...

  9. Java实现 LeetCode 410 分割数组的最大值

    410. 分割数组的最大值 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: ...

随机推荐

  1. 路径R

    定义文件路径时前面加个r 例如 firstfolder = r"C:\Users\1261\Desktop\" 不对其中的符号进行转义

  2. vue-router+elelment-ui,实现导航栏激活高亮

    <el-menu :default-active="$route.path" class="el-menu-vertical-demo" backgrou ...

  3. configparser模块(ini配置文件生成模块)

    config = configparser.ConfigParser() #初始化config对象 [DEFAULT] #设置默认的变量值,初始化 config["DEFAULT" ...

  4. java数组的定义

    class ArrayDome { public static void main(String[] args) { //元素类型[] 数组名 创建一个 元素类型[元素个数或数组长度] /* 需要一个 ...

  5. [err]Traceback (most recent call last): File "/usr/local/bin/pip", line 7, in <module> from pip._internal import main ImportError: No module named 'pip._internal'

    Q: Traceback (most recent call last):File "/usr/local/bin/pip", line 7, in <module>f ...

  6. 20155219付颖卓《网络攻防》Exp4 恶意代码分析

    一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控. 可以用window7自带的schtasks ...

  7. 百战程序员——JDBC

    JDBC全称是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  8. UT源码105032014093

    需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Ce ...

  9. BBS

    __init__.py # 这个告诉程序用的是什么数据库import pymysql pymysql.install_as_MySQLdb() settings.py import os # Buil ...

  10. (转)volatile 的理解

    对于(volatile unsigned char *)0x20我们再分析一下,它是由两部分组成: 1) (unsigned char *)0x20,0x20只是个值,前面加(unsigned cha ...