列表
访问列表中的列表元素:
list = [123,['hello','world'],456]
print(list[1][0])
list = [123,456,['hello','world']]
print(list[-1][1])
运行结果:
关于列表分片“拷贝”的概念
list1 = [1,3,2,9,7,8]
list2 = list1[:]
list3 = list1
print("list1 ",list1)
print("list2 ",list2)
print("list3 ",list3)
list1.sort()
print()
print("list1 ",list1)
print("list2 ",list2)
print("list3 ",list3)
运行结果:
元组
创建只有一个元素的元组
temp = (1,)
print(type(temp))
元组元素的复制
print(8 * (8,))
运行结果:
函数的闭包
Python中的*args和**kwargs
在函数定义中使用*args和kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); kwargs用作传递键值可变长参数列表
*args表示任何多个无名参数,它是一个tuple
**kwargs表示关键字参数,它是一个dict
具有两个以上维度的数据帧切片
import torch
# 譬如:4张图片,每张三个通道,每个通道28行28列的像素
a = torch.rand(4, 3, 28, 28)
# 在第一个维度上取后0和1,等同于取第一、第二张图片
print(a[:2].shape)
# 在第一个维度上取0和1,在第二个维度上取0,
# 等同于取第一、第二张图片中的第一个通道
print(a[:2, :1, :, :].shape)
# 在第一个维度上取0和1,在第二个维度上取1,2,
# 等同于取第一、第二张图片中的第二个通道与第三个通道
print(a[:2, 1:, :, :].shape)
# 在第一个维度上取0和1,在第二个维度上取1,2,
# 等同于取第一、第二张图片中的第二个通道与第三个通道
print(a[:2, -2:, :, :].shape)
# 使用step隔行采样
# 在第一、第二维度取所有元素,在第三、第四维度隔行采样
# 等同于所有图片所有通道的行列每个一行或者一列采样
# 注意:下面的代码不包括28
print(a[:, :, 0:28:2, 0:28:2].shape)
print(a[:, :, ::2, ::2].shape) # 等同于上面语句