Python 部分
001. Python 中 sys.argv[]
的用法
sys.argv[]
存储的是一个列表:
- 其中
sys.argv[0]
指代的是运行的程序代码本身。例如当运行python train.py
时,sys.argv[0]
就等于train.py
(数据类型为str
); - 从
sys.argv[1]
开始,存储的都是额外的命令行参数。例如当运行python train.py aaa bbb
时,sys.argv[1]
等于aaa
,sys.argv[2]
等于bbb
。
参考: https://www.cnblogs.com/aland-1415/p/6613449.html
002. scipy.misc.imread()
函数
-
该函数的用法:将图片读取为
array
类型。( https://blog.csdn.net/zz2230633069/article/details/82706120 ) -
在 SciPy 1.2.0 中,
imread
与imresize
函数都将被弃用,弃用之后的替代方案是使用imageio
库的imread
与imresize
方法。( https://blog.csdn.net/weekdawn/article/details/97777747?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task )imageio
库可能需要单独安装:pip install imageio
003. copy()
与 deepcopy()
参考: https://www.cnblogs.com/Richardzhu/p/4723750.html
Python 对象之间的赋值类似于 C 语言中的指针:b = a
是将指针 b 指向了指针 a 所指的内容。例如:
a = [1, 2, 3, 4, ['x', 'y']]
b = a # 将指针b指向指针a所指的内容
print(b)
# 输出:[1, 2, 3, 4, ['x', 'y']]
copy.copy()
是浅拷贝,它拷贝的是父对象的内容以及父对象内部子对象的指针。这也就意味着,拷贝出来的内容不会随原父对象内容的改变而改变,但会随原子对象内容的改变而改变。例如:
import copy
a = [1, 2, 3, 4, ['x', 'y']]
b = copy.copy(a)
print('浅拷贝同时拷贝父对象和子对象:{}'.format(b))
a.append(5)
print('它会免疫父对象内容的改变:{}'.format(b))
a[4].append('z')
print('但会受到子对象内容的影响:{}'.format(b))
输出如下:
浅拷贝同时拷贝父对象和子对象:[1, 2, 3, 4, ['x', 'y']]
它会免疫父对象内容的改变:[1, 2, 3, 4, ['x', 'y']]
但会受到子对象内容的影响:[1, 2, 3, 4, ['x', 'y', 'z']]
copy.deepcopy()
是深拷贝,它拷贝的是父对象的内容以及子对象的内容。因此,深拷贝既不会随父对象内容的改变而改变,也不会随子对象内容的改变而改变。例如:
import copy
a = [1, 2, 3, 4, ['x', 'y']]
b = copy.deepcopy(a)
print('深拷贝同时拷贝父对象和子对象:{}'.format(b))
a.append(5)
print('它既可以免疫父对象内容的改变:{}'.format(b))
a[4].append('z')
print('但又可以免疫子对象内容的改变:{}'.format(b))
输出如下:
深拷贝同时拷贝父对象和子对象:[1, 2, 3, 4, ['x', 'y']]
它既可以免疫父对象内容的改变:[1, 2, 3, 4, ['x', 'y']]
但又可以免疫子对象内容的改变:[1, 2, 3, 4, ['x', 'y']]
004. 安装 SciPy
SciPy 官网: https://scipy.org/install.html
使用如下命令安装:
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
005. defaultdict
collections.defaultdict
是提供了默认值的字典:defaultdict
会为每个未知的 key
分配一个初始的 value
,从而即使直接从 defaultdict
中取键对应的值,也不会报错。而用默认的 dict
时,如果事先不为键分配一个初始值,则直接根据键取值会报错。
参考: https://www.jianshu.com/p/26df28b3bfc8
006. split()
函数
详见: https://www.cnblogs.com/hjhsysu/p/5700347.html
007. 如何将一个字符串分解成单个的字符
参考: https://blog.csdn.net/qq_29750277/article/details/82023347
使用 list
即可。例如:
x = 'abc'
y = list(x)
print(y)
输出:['a', 'b', 'c']
。
上述字符串可以直接使用 sort
函数:
a = 'cba'
y = sorted(a)
print(str(y))
输出:['a', 'b', 'c']
。
008. 解决 TypeError: unhashable type: 'list'
参考: https://blog.csdn.net/you_are_my_dream/article/details/61616646
字典的 key
不能是 list
及 dict
这种 unhashable 类型的,可以使用 tuple
( tuple
是可哈希的)。
网友评论