1. Python zip() 函数
描述
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
语法
zip 语法:
zip([iterable, …])
参数说明:
iterabl – 一个或多个迭代器;
实例:
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>
# 在for循环中的使用
>>>for q,w in zip(a,b):print((q,w))
>>>(1, 4)
>>>(2, 5)
>>>(3, 6)
>>>c = [(q,w) for q,w in zip(a,b) ]
>>> [(1, 4), (2, 5), (3, 6)]
2. Python tqdm函数
描述:
tqdm是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。
类:
class tqdm():
"""
修饰一个可迭代对象,返回一个迭代器,
它的行为与原始的可迭代器完全相同但是在每次请求一个值时
输出一个动态更新的progressbar。
"""
def __init__(self, iterable=None, desc=None, total=None, leave=True,
file=None, ncols=None, mininterval=0.1,
maxinterval=10.0, miniters=None, ascii=None, disable=False,
unit='it', unit_scale=False, dynamic_ncols=False,
smoothing=0.3, bar_format=None, initial=0, position=None,
postfix=None, unit_divisor=1000):
部分参数解析:
- desc : str, optional
progressbar的前缀。 - total : int or float, optional
预期迭代的数量。如果未指定,则尽可能使用len(iterable)。如果浮动(“inf”)或作为最后的手段,只显示基本的进度统计(没有ETA,没有progressbar)。如果gui为真且该参数需要后续更新,则指定一个任意大的初始值,例如9e9。
3. Python item函数
描述:
item主要用于神经网络中,其作用主要为:如果一个tensor只有一个元素,可以使用*item()*函数来把它变成一个Python number
实例:
import torch as t
vector = t.arange(2, 6)
vector
Out[8]: tensor([2, 3, 4, 5])
vector[3]
Out[9]: tensor(5)
vector[3].item()
Out[10]: 5
由此可见item主要是将tensor()变为number。其多用于训练过程中对loss进行统计