目录
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