python关于倒序求差值的具体问题

2021-04-28 10:14发布

[图]如图所示,已知X列数据,现需生成Y列数据,要求Y列数据为X列每一行数值减去上一行数值。如:Y1=X2-X1,Y2=X3-X2,Y3=X4-X3....

如图所示,已知X列数据,现需生成Y列数据,要求Y列数据为X列每一行数值减去上一行数值。

如:Y1=X2-X1,Y2=X3-X2,Y3=X4-X3....


4条回答
722
2楼 · 2021-04-29 10:17

本文主要讲解Shell的输入/输出重定向的相关知识




一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。


重定向命令列表如下:


命令 说明

command > file 将输出重定向到 file。

command < file style="white-space:pre"> 将输入重定向到 file。

command >> file 将输出以追加的方式重定向到 file。

n > file 将文件描述符为 n 的文件重定向到 file。

n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。

n >& m 将输出文件 m 和 n 合并。

n <& m 将输入文件 m 和 n 合并。

<< tag style="white-space:pre"> 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

注意:文件描述符 0通常是标准输入(STDIN),1是标准输出(STDOUT),2是标准错误输出(STDERR)。


一般情况下,每个 Linux 命令运行时都会打开三个文件:


标准输入文件(stdin):文件描述符为0,默认从stdin读取数据。

标准输出文件(stdout):文件描述符为1,默认向stdout输出数据。

标准错误文件(stderr):文件描述符为2,默认向stderr流中写入错误信息。

如果希望 stderr 重定向到 file,可以这样写:


$ command 2 > file

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:


$ command > file 2>&1

如果希望对 stdin 和 stdout 都重定向,可以这样写:


$ command < file1>file2

command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。




一、输出重定向



语法:


command > file

执行command命令,将输出的内容存入file。


注意:任何file内的已经存在的内容将被新内容替代。如果要将新内容追加在文件末尾,请使用>>操作符。


实例:


执行who命令,它将命令的输出重定向在用户文件中(users):


$ who > users

执行后,并没有在终端输出信息,因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。


使用 cat 命令查看文件内容:


$ cat users

_mbsetupuser console  Oct 31 17:35 

ltaihyy    console  Oct 31 17:35 

输出重定向会覆盖文件内容,请看下面的例子:


$ echo "向文件输出内容1" > users

$ cat users

向文件输出内容1    #原内容被覆盖

$

如果不希望文件内容被覆盖,可以使用 >> 追加到文件末尾,例如:


$ echo "向文件输出内容2" >> users

$ cat users

向文件输出内容1

向文件输出内容2

$


二、输入重定向




和输出重定向一样,也可以从文件获取输入,


语法:


command < file>

这样,本来需要从键盘获取输入的命令会转移到读取文件内容。


实例:


接着以上实例,我们需要统计 users 文件的行数,执行以下命令:


$ wc -l users

       2 users

也可以将输入重定向到 users 文件:


$  wc -l < users>

       2 

注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。



三、Here Document




Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。


语法:


command << delimiter>

    document

delimiter

作用:将两个 delimiter 之间的内容(document) 作为输入传递给 command。


注意:结尾的delimiter 一定要顶格写,前后都不能有任何字符,包括空格和 tab 缩进。


实例:


在命令行中通过 wc -l 命令计算 Here Document 的行数:


$ wc -l << EOF>

    欢迎来到

    ltaihyy

    的博客

EOF

3          # 输出结果为 3 行

$



四、/dev/null文件




如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:


$ command > /dev/null

/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。


如果希望屏蔽 stdout 和 stderr,可以这样写:


$ command > /dev/null 2>&1


————————————————

版权声明:本文为CSDN博主「龙之家」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/ltaihyy/article/details/53750438


我是大脸猫
3楼 · 2021-04-30 09:22

问题描述

  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。

输入格式

  输入第一行包含一个整数n。

  第二行包含n个正整数,相邻整数之间使用一个空格分隔。

输出格式

  输出一个整数,表示答案。

样例输入

  5

  1 5 4 8 20

样例输出

  1

样例说明

  相差最小的两个数是5和4,它们之间的差值是1。

样例输入

  5

  9 3 6 1 3

样例输出

  0

样例说明

  有两个相同的数3,它们之间的差值是0.

数据规模和约定

  对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。


程序代码

# 输入数字个数

n = int(input())


# 输入数字

numberList = input().split()


# 类型转换

for i in range(n):

    numberList[i] = int(numberList[i])

    

# 列表排序

numberList.sort()


# 设置最小差值并初始化(最大数字为10000)

min = 10000


# 遍历列表求出最小差值

for i in range(n - 1):

    sub = abs(numberList[i] - numberList[i+1])

    if  sub < min>

        min = sub


# 输出最小差值

print(min)


嘿呦嘿呦拔萝卜
4楼 · 2021-04-30 18:32
#1.字符串、列表、元组均可用此方法 (使用切片的方法) 不修改元素原有内容,将输出进行赋值
#1.1 字符串
s='nihao' 
s1=s[::-1]
#1.2 列表
lin=["a","b","c"]
print(lin[::-1])
#1.3 元组
tup=("e","f","g","h",2,3,6)
print(tup[::-1])
 
#2.列表独有方法
lin=["a","b","c"]
lin.reverse()
print(lin)


yuixan
5楼 · 2021-05-22 18:20

python可否用自定义函数对数据进行插值


除了interp函数自带的插值方式,可否用一个自定义的函数表达式对interp直接定义a=True/False就行,示例代码: #定义布尔值类型参数a,b,值分别为True,False a=True b=False print a,b print type(a),type(b) >>> True False Python中的布尔类型: Python的布尔类型有两个值:True和False(注意大小写要区分)


python插值的时候,怎么获取插值后的数据


scipy中好像并没有进行下采样的函数,嗯..难道是因为太过简单了么,不过好像用一个循环就可以完成,但如果把向量看成一个时间序列,使用pandas中的date_range模块也可以十分方便的以不同频率进行采样,并且,很多对文件的操作都是使用pandas操作

相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,&#39;\n&#39;是换行,&#39;\t&#39;是tab,&#39;\\&#39;是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open(&#39;3_2.txt&#39;,&#39;r&#39;)linecount=len(file.readlines())linecache.getline(&#39;3_2.txt&#39;,linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问