Script杂记

5 篇文章 0 订阅
4 篇文章 2 订阅

1 Python

1.1 Kill Python

/dev/zero文件提供了可以无限读取的0字符,所以对文件进行跳行时,会导致Python异常终止。

f=open('/dev/zero')
next(f)

1.2 Kill Prompt

$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
$ python3 -q
>>>

1.3 控制循环层数

# 3个循环,每个循环都是range(2),总次数为2**3=8次
for i in range(2):
	for i in range(2):
		for i in range(2):
			foo()

# 当需要循环2**n次时
from itertools import product
for v in product(*[range(2)]*n):
	foo()

#product的一般用法
for i1, i2... in product(iter1, iter2...)

1.4 list平移

list=[_ for _ in range(10)] #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#取出左边放到右边
#原理:list.pop(index)移除index索引处元素,并更新list,并返回被移除元素值
#     list.append()是往后填充
list.append(list.pop(0)) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

#取出右边放到左边
#原理:list.pop()移除最后一个元素,并更新list,并返回被移除元素值
#     list.insert(index, val)向index索引处插入val元素
list.insert(0, list.pop()) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#平移n次
for _ in range(n): list.insert(0, list.pop())

1.5 取出嵌套列表里面所有值

def foo(a):
	r=[]
	for i in a:
		if type(i) is list: r+=foo(i)
		else: r.append(i)
	return r
a=[1, [2, 3], 4, [5, 6], [7, [8, 9, 10]]]
foo(a) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2 Bash Shell

2.1 读取特定行文本

利用tail命令的-n +[num]参数打印文本的num行到最后一行,(-n [num]则表示打印最后一行往上的共num行),再利用head命令的-n num打印前num行,就可以实现特定行范围的打印。
如打印99行到100行,tail-n参数是起始行+99,head-n表示打印共两行。

tail -n +99 /path/to/your/text | head -n 2

2.2 重定向

>表示只将标准打印信息重定向,2>表示只将出错信息重定向,&>表示前两者均重定向。

lantern &> /dev/null

3 IDL

3.1 Run away, NOT walk, from IDL

3.2 接收不必要返回值

;use
!NULL = QUERY_TIFF(fn, GEOTIFF=MyWanted)
;instead of
NotMyWanted = QUERY_TIFF(fn, GEOTIFF=MyWanted)
NotMyWanted = !NULL

3.3 连续赋值

;use
a = (b = (c = 0))
;instead of
a = 0
b = 0
c = 0

3.4 没必要提前准备变量

;use
READU, lun, (header = {endian: 0S, version: 0S, offset: 0L})
;instead of
header = {endian: 0S, version: 0S, offset: 0L}
READU, lun, header

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值