这篇文章是我个人对这本书的学习《利用 Python 进行数据分析》。整个系列今天开始连载。1.1数据结构Python的基本数据结构包括元组、列表、字典、集合,以及一些特殊的数据结构(如范围对象、字符串等)。1.1.1什么是元组?元组是固定长度、不可变内容的序列。如何创建元组?#用逗号分隔是创建元组的最简单方法tup=1,2,3tup="a","b","any"tup=(2,3,4),(5,6)#usetuple()可以把一个序列转成元组tup=tuple([2,3,4])元组的内容是不可变的,这句话怎么理解?in:tupout:(2,3,4)in:tup[0]=5#这行命令不能运行,因为元组中的值不能改变#但是,如果元组中的一个对象是可以改变的并且可以在其对应的位置进行修改:tup=(1,[1,2,3],2)tup[1].append(4)tupout:(1,[1,2,3,4],2)虽然元组的内容是不可变的,但是元组是可以连接和拆分的。#连接元组(1,2,4)+('haha',[2,3],True)#使用加号连接元组(1,2)*3#使用乘号复制元组Concatenation#拆分元组a,b,c=(1,2,3)a,b,(c,d)=(1,2,(3,4))#即使元组内的元组也会拆分:info='name','age','job','zipcode'a,b,*_=info#可以从元组的开头选择想要的值,剩下的保存在*_中print('a={},b={}'.format(a,b))out:a=name,b=age元组,常用count()。in:num=1,2,2,2,3,4,5num.count(2)#count()可以用来计数:计算一个值在元组对象中出现的总次数out:31.1.2列表(list)与元组不同的是,列表的长度是可变的,内容也是可以修改的。如何创建列表?list_fruit=['apple','banana','orange','orange']tup='apple','banana','orange','orange'list_fruit=list(tup)#你可以使用list()来结合其他序列被转换为列表列表的可变性允许我们对列表执行许多操作。向列表添加或删除元素:#添加元素list_fruit.append('pear')#在列表末尾添加元素list_fruit.insert(1,'durian')#在列表的特定位置添加元素#insertthanappend计算量较大,因为插入后,后续元素的引用必须在内部迁移#移除元素list_fruit.pop(1)#移除并返回指定位置的元素list_fruit.remove('orange')#移除元素指定元素(从第一个开始,一次删除一个)#列表的串联list_fruit+['melon','grape']list_fruit.extend(['durian','watermelon'])#你可以使用extend()追加多个元素#加法计算量更大,因为加法会创建一个新的列表,而extend()将元素排序追加到原来的列表中#sort()可以对一个列表进行原地排序(无需创建新对象):a=[2,4,6,3,1]a.sort()aout:[1,2,3,4,6]#默认是升序in:b=['hah','kdjalkdjalk','d','ldkld']b.sort(key=len)#通过指定key参数,可以根据元素的长度来排列bout:['d','hah','ldkld','kdjalkdjalk']#sorted()也可以排序,但是不会改变原来的顺序,而是新建一个列表:a=[1,5,7,3,4]print('sorted_a=',sorted(a))print('a=',a)out:sorted_a=[1,3,4,5,7]a=[1,5,7,3,4]切入:seq=[1,2,4,6,2,4,8,9]seq[1:4]out:[2,4,6]in:seq[0:2]=[100,60]#你可以直接给切片赋值,这样会改变原来的listseqout:[100,60,4,6,2,4,8,9]in:seq[::2]#在第二个冒号之后使用step取一段距离的元素seq[::-1]#这个方法可以把list倒过来:[100,4,2,8][9,8,4,2,6,4,60,100]#PS:元组也可以切片:)enumerate()sequencefunction#在迭代的时候,我们往往想知道当前项的序号,所以我们可能会可以这样写:i=0forvalueinlist_fruit:print('第{}个元素是:{}'.format(i,value))i+=1#上面的代码可以简化为:fori,valueinenumerate(list_fruit):#可以返回(i,value)样式的元组print('第{}个元素是:{}'.format(i,value))zip()成对组合#zip()可以组合多个Sequence组合成一个zip对象(元组列表):seq1=[1,2,3]seq2=['happy','sad','angry','peace']zipped=zip(seq1,seq2)zippedout:
