BOOM KAKA–Python is learning
一,enumerate,zip函数的结合使用
1. enumerate函数:
(1)遍历一个序列的同时(2)追踪当前元素的索引。
some_list=['foo','bar','baz']
mapping={}
for i,value in enumerate(some_list):
mapping[value]=i
a = mapping.get(value) #查找key 为 'baz'的value, a = 2
print(mapping)
#mapping: {'foo': 0, 'bar': 1, 'baz': 2}
2. zip函数:
将列表,元祖或其他序列的元素配对,新建一个元祖构成的列表
image=['image1','image2','image3','image4']
label=[1,2,3,1]
zipped=zip(image,label)
print(list(zipped))
# [('image1', 1), ('image2', 2), ('image3', 3), ('image4', 1)]
zip可以处理任意长度的序列,它生成列表长度由最短的序列决定
seq3=['False','True']
print(list(zip(image,label,seq3)))
#[('image1', 1, 'False'), ('image2', 2, 'True')]
3. enumerate 和 zip一起用
一般来说,enumerate和zip函数是一起用的,他们的应用场景
zip的常用场景为同时遍历多个列表,有时候会和enumerate同时使用
eg. 把dataset的data与corresponding label 一一对应起来
# enumerate 和 zip一起用
image=['image1','image2','image3','image4']
label=[1,2,3,1]
for i,(a,b) in enumerate(zip(image,label)):
print('{}:({},{})'.format(i,a,b))
#format, 挖空,依次填入format(...)中的值
# 0: (image1, 1)
# 1: (image2, 2)
# 2: (image3, 3)
# 3: (image4, 1)
二、numpy
1. squeeze()
squeeze() 从数组的形状中删除单维度条目,即把shape中为1的维度去掉
https://blog.csdn.net/zenghaitao0128/article/details/78512715
三、Argparse
1. Argparse 使用
https://www.cnblogs.com/cuhm/p/10643765.html
# 导入包
import argparse
# 创建解析器
parser = argparse.ArgumentParser()
#添加位置参数(positional arguments)
parser.add_argument('--dir', type=str, default = '', help='input a int')
parser.add_argument('--cuda', action='store_false', default=True, help='use cuda')
args = parser.parse_args()
其中action参数的’store_true’指的是:触发action时为真,不触发则为假。即储存了一个bool变量,默认为False; 只要触发(即edit configuration时,输入了–cuda), 则 args.cuda = True
parser.add_argument('--cuda', action='store_false', default=True, help='use cuda')
此句,触发了–cuda,所以cuda=false。(default=False意思是,edit configuration时,若不输入–cuda, 则默认为args.cuda = False, 不用cuda(local 只有 cpu))
2. pycharm中传入命令行参数
https://blog.csdn.net/jacke121/article/details/77867939