str是不可变的对象,list是可变的对象,set和dict的key也是不可变的对象
一、list和tuple
基本用法
数组
- list1=[1,2,3,["a","b"],"c"]
- 追加数据到数组末尾list1.append("d")-------[1,2,3,["a","b"],"c","d"]
- 插入数据到数组的第二个元素list1.insert(1,0)-------------[1,0,2,3,["a","b"],"c","d"]
- 删除第二个数据list1.pop(1)----------------1,2,3,["a","b"],"c","d"]
元组
- 如果只有一个元素则需要加个逗号t=(1,)
- 元组不能做修改,但可以修改元组内的元素
- 元组不可变,但是代码安全
字典
- 格式{key:value}
- 赋值:d['Lily']=30
- 通过in判断key是否存在,存在返True不存在返False:‘lily’ in d
- 可以通过get()方法,判断key不存在,可以返回none,或者自己制定的value:d.get('lily') d.get('lily',-1)
- 通过pop(key)方法,删除key,对应的value也会从dict中删除
- dict内部存放的顺序和key放入的顺序是没有关系的
- dict的key是不可变的对象(dict根据key来计算value的储存位置,如果每次计算相同的key得出的结果不同,那dict内部就完全乱了。这个通过key计算位置的算法成为哈希算法(Hash)
和list相比dict有如下特点:
- 查找和插入速度快,不会随着key的增加而变慢
- 需要占用大量内存,内存浪费多
而list相反:
- 查找和插入的时间随着元素的增加而增加
- 占用内存空间少,浪费内存少
set(s=set([1,2,3,4]))
- set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key.
- 重复的元素在set中自动被过滤
- 通过add(key)方法可以向set中添加元素
- 通过remove(key)来删除元素
- set可以看做数学意义上的无序和无重复元素的集合,两个set可以做数学意义上的交集、并集等操作(& 和|)
.
读取文件行数的几种方式:
filepath="E:\\gctest1.txt"
count=0
with open(filepath,'r',encoding='utf-8') as f:
##1.这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
count=len(f.readlines())
# 2.可以利用enumerate()
for index,line in enumerate(f):
count+=1
# 3.可以利用readlines()
for line in f.readlines():
count=count+1