复杂数据类型
https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合的增删改查及遍历。
lsit 列表: classmates = ['Michael', 'Bob', 'Tracy'] 增: classmates.insert(1, 'Jack') classmates.append('Adam') #可变有序表直接在末尾追加元素 删: classmates.pop() #删除末尾元素 classmates.pop(1) #删除指定位元素 改: classmates[1] = 'Sarah' #直接赋值给对应的索引位置 查: classmates[0] #用索引来访问list中每一个位置的元素 classmates[-1] #如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元
tuple 元祖: tuple一旦初始化就不能修改 classmates = ('Michael', 'Bob', 'Tracy') tuple没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。 tuple的定义: t = (1, 2) #必须确认tuple的元素,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
dict 字典: dict>>dictionary d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} 增:d['Adam'] = 67 #直接插入key和value 查:d['Bob'] #根据key查询 改:d['Bob']=78 删:d.pop('Bob')
and 由于一个key只能对应一个value,所以,所以,多次对一个key放入value,
后面的值会把前面的值冲掉,如果key不存在,dict就会报错,要避免key不存在的错误,
有两种办法,一是通过in
判断key是否存在,二是通过dict提供的get()
方法,
如果key不存在,可以返回None
,或者自己指定的value
set : s = set([1, 2, 3]) #set会过滤重复元素 增: s.add(key) 删: s.remove(key)
列表,元组,字典,集合的联系与区别:
list是一种有序的集合,可以随时添加和删除其中的元素。 tuple和list非常类似,但是tuple一旦初始化就不能修改. list和tuple是Python内置的有序集合,一个可变,一个不可变。 dict全称dictionary(字典),在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 dict内部存放的顺序和key放入的顺序是没有关系的。 和list比较,dict有以下几个特点: 查找和插入的速度极快,不会随着key的增加而变慢; 需要占用大量的内存,内存浪费多。 而list相反: 查找和插入的时间随着元素的增加而增加; 占用空间小,浪费内存很少。 所以,dict是用空间来换取时间的一种方法。 set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
词频统计:
import pandas as pd def gettxt(): make = '.,;:?!-_""''' with open('test.txt', "r", encoding="utf8", errors="ignore") as f: txt = f.read().lower() for exc in make: txt = txt.replace(exc,'') return txt bigList = gettxt().split() bigSet = set(bigList) with open('stops.txt',"r",encoding="utf8",errors="ignore") as f: exclude = f.read().lower().split() bigSet = bigSet - set(excludes) bigDict = {} for word in bigSet: bigDict[word] = bigList.count(word) word=list(bigDict.items()) print(word) word.sort(key=lambda x:x[1],reverse=True) pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')