python有以下几种容器类型:Lists,dictionaries,sets,tuples
Lists
Python中的数组,但是列表的长度可变,而且能包含不同类型的元素。
xs=[3,2,1]
xs[0] #3
xs[2] #1
xs[-1] # 1
xs[-3] # 3
#从右是以0开始的,从左是从-1开始的
xs[2]='fpp'
print(xs) # [3, 1, 'fpp']
xs.append('bar') # 在列表的尾部添加元素
x=xs.pop() #移除并返回列表的最后一个元素
print(x,xs) #bar [3, 1, 'foo']
切片语法,很类似matlab中的语法,简单来说就是用下标访问数据(下标从0开始),而冒号右边有下标这种切片方式访问是左包含右不包含的
nums=[0,1,1,2,3]
print(nums[2:4]) # [1,2] 左包含右不包含
print(nums[2:]) #[1, 2, 3]从index 2 to end
print(nums[:2])#[0, 1]从start to index 2
print(nums[:])# from strat to end
print(nums[:-1])#[0, 1, 1, 2]左包含右不包含
nums[2:4]=[8,9] #赋值
切片语法在循环中的运用
animals=['cat','dog','monkey']
for idx,animal in enumerate(animals):
print('#%d: %s'%(idx+1,animal))
#print格式话输出
nums=[0,1,2,3,4]
squares=[]
for x in nums:
squares.append(x**2)
print(squares)#[0, 1, 4, 9, 16]
nums=[0,1,2,3,4]
squares=[x**2 for x in nums if x%2==0]
print(squares)#[0, 4, 16]
#列表推导 即将一种数据类型转换为另外一种 读法从循环开始读即为以下形式
for x in nums :
if x%2==0:
squares.append(x**2)
dictionaries
类似于C++的map,保存键值对,支持键和值均使用不同的数据类型
例如d={8:‘cat’,‘cy’:7}
d={'cat':'cute','dog':'furry'} #创建并初始化字典
d['fish']='wet' #添加键值对
del d['fish'] #删除键值对
print(d['cat']) #cute 打印cat对应的值
print('cat' in d) #若cat在d中则显示true 否则显示false
print(d['cat'])
字典中的循环
#使用键来进行迭代
di={'person':2,'cat':4,'spider':8}
for animal in di:
legs=di[animal]
print('A %s has %d legs'%(animal,legs))
#使用键和值一起进行迭代 要使用items方法
di={'person':2,'cat':4,'spider':8}
for animal ,legs in di.items():
print('A %s has %d legs'%(animal,legs))
#字典推导
nums=[0,1,2,3,4]
square={x:x**2 for x in nums if x%2==0}
print(square)
#与下列代码作用相同
square={}
for x in nums:
if x%2==0:
square[x]=x**2
print(square)
#结果:{0: 0, 2: 4, 4: 16}
set
集合元素数据类型可以不同,需要注意的是集合中元素是无序 的
an={'cat',1,2,'mao'} #允许不同的数据类型
print('cat' in an) #判断cat是否在an中,在则返回true,否则返回false
an.add('test') #添加
an.remove('cat') #删除
print(len(an)) #输出长度
for animal in animals:
print('%s'%(animal)) # fish cat
#集合推导
from math import sqrt
nums={int(sqrt(x)) for x in range(30)}
print(nums)
tuples元组
简单来说就是两个元素的二元组
t=(2,'x')
d={t:'test'}
print(d[t])#test