1.list 列表
# 初始化列表
li = [1, 2, 3, 'abc', 4.5, [2, 3, 4], {1:'one'}] #可以是任意元素
#还有元组比如 li=(1,2,3) 只能写不能读
# 获取长度
print(len(li))
print('') #空一行
# 根据索引读写
print(li[0])
print(li[-1])#-1索引表示倒数第一个(其实是表示len(li)-1)
# 添加元素
li.append('a') or li += ['a'] #添加字符'a'
li.append([4, 5, 6])#[4,5,6]作为一个元素加入
li.extend([4, 5, 6])#4,5,6分别加入
# 删除元素
li = [1, 2, 3, 4, 5]
li.pop() #删除最后一个
del(li[0]) #按索引删除
# 判断元素是否存在
print(6 in li) #return true or false
# 判断列表是否为空
li = []
if not li:
print('Empty')
else:
print('Not empty')
# 遍历列表 注意for后要冒号
for i in li:
print(i)
for i in range(len(li)):
print(li[i])
# 字符串
s = 'abcdefg'#python不能直接修改字符串,转为list型再修改
li = list(s) #这是可以按操作list方式操作s
s = ''.join(li)#list转回成字符串
#切片操作
li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(li[2:5]) #2<=index<5,左闭右开
print(li[:4]) # index<4
print(li[5:]) #5<=index
print(li[:]) #全部
print(li[0:6:2]) #0<=index<6,且间隔为2
print(li[3::2]) #3<=index,且间隔为2
# 负数索引
print(li[::-1]) #倒序打印
print(li[::-2]) #倒序且间隔为2打印
print(li[-6:-1:1])
print(li[-1::-1])
#注意 array aliases and copies
x = [1,2,3]
y = x #这个操作只是给x起了一个别名,y,x都指向同一数组,修改x会同时修改y
#完全复制出一个新的就要用
y = x.copy() 或 y = x[:] #注意与numpy区别,numpy里使用y = x[:]还是只是取个别名,只有np.copy(x)才是真的copy


(图片引自<程序设计导论-python语言描述>)
2.dictionary 字典
# 字典-索引与数据,一种内建映射,在需要类似哈希表结构时就会用字典
#以 key:value形式存储
# 初始化
d = {'a':1, 2:'b', 'c':3, 4:'d'}
print(d)
# 获取长度
print(len(d))
# 根据key读写
#方括号里是key
d['a'] = 100 #前提里面已经有‘a’这个key,然后改,否则就是添加了元素
print(d[4]) #key为4的那个value
# 添加元素
d['e'] = 5 #原本里面没有‘e’这个key
# 删除元素
del(d['a'])
# 判断key是否存在
if 'a' in d:
print('a in d')
# 判断字典是否为空
d = {}
if not d:
print('d is empty')
print('')
# 遍历
for k in d.keys(): #k就是对key循环
print(str(k) + ': ' + str(d[k]))
for k, v in d.items(): #k就是对key循环,v就是对value循环
print(str(k) + ': ' + str(v))
3.set 集合
# 初始化,里面不会有重复元素
s_a = set([1, 2, 3, 4, 5])
s_b = set([1, 1, 2, 2, 3, 4, 5])
print(s_a)
print(s_b) #a,b里面元素一样
# 获取长度
print(len(s_a))
# 添加元素(重复的自动去掉)
s_a.add(6)
s_a.update([5, 6, 7, 8, 9]) #直接加上多个元素
# 删除元素
s_a.remove(8)
# 判断元素是否存在
print(1 in s_a) #return true or false
# 判断集合是否为空
s_a = set([])
if not s_a:
print('set is empty')
else:
print('set is not empty')
# 遍历
for i in s_a:
print(i)
# 集合操作
s_a = set([1, 2, 3, 4, 5])
s_b = set([4, 5, 6, 7, 8])
# 并集
print(s_a | s_b)
print(s_a.union(s_b))
# 交集
print(s_a & s_b)
print(s_a.intersection(s_b))
# 差集 s_a - (s_a and s_b)
print(s_a - s_b)
print(s_a.difference(s_b))
# 对称差
print(s_a ^ s_b)
print((s_a | s_b) - (s_a & s_b))
print(s_a.symmetric_difference(s_b))