Python处理数据,最常用的是dataframe结构。但dataframe其实也是由其他对象组成的,比如int、float、字符串等等。今天来了解一下其他常见的对象,熟悉他们的用法。
列表List
list1 = ['a','b','c'] #每个元素都是字符串
list2 = [1,2,3] #每个元素都是数字
list3 = ['a','b',1,2,[1,2]] #元素有字符串、数字、列表
列表里的元素,可以是各种格式,数字、字符串,甚至是列表。访问列表的值
print(list1[0]) #list1的第1个元素(索引从0开始)
print(list3[4][0]) #访问list3中[1,2]中的1
print(list3[0:3]) #切片:访问索引0、1、2,注意[0:3]不包含3
print(list1[-1]) #访问倒数第一个值列表的添加:extend和append
#注意extend和append的用法:单个元素时,用法一致。但多个元素时,不一致
list1.append('d') #append添加'd'
print('append:d\n',list1,'\n')
list1.extend('e') #extend添加'e'
print('extend:e\n',list1,'\n')
list1.append(list2) #append添加list2
print('append:list2\n',list1,'\n')
list1.extend(list2) #extend添加list2
print('extend:list2\n',list1,'\n')
可以看到,append是把list2整个塞进去,而extend是把list2的元素塞进去。这一点一定要分清楚哦。而且append和extend,都是在原来的列表上修改。元素移除
list1.pop(-1) #移除最后一个元素
list1.remove('a') #删除数值a,若有多个a,则删除第一个
注意,都是在原本的列表上修改。如果怕丢掉原始数据,一定要先备份,再操作。其他
list2.reverse() #把原列表顺序反转:如[1,2,3]改成[3,2,1]
['a','a','a','b'].count('a') #计数a的个数
['a','a','a','b'].index('a') #找到第一个a所在的索引
[1,2,3] + [4,5,6] #列表拼接
len(list1) #求list1的长度
min(list2) #最小值
list(set(['a','a','a','b'])) #列表去重:先转换成set集合(无重复数据),再转换成列表
字符串str
s1 = 'python and data'
s2 = 'hello'
s1[0] #索引第一个值
s1[3:7] #第3、4、5、6个值
s3 = s2 + s1 #字符串拼接
'p' in s1 #判断p是否在s1中,常用于if中
't' not in s1分割split
s = 'a.b.c.d-e-f-d'
s.split('.') #以.进行分割,返回列表
s.split('-') #以-进行分割,返回列表遍历字符串的索引、值
for i,v in enumerate('abcdefg'):
print(i,v) #i是index,v是数值
字典dict
d1 = {'李':5000,'王':3000,'张':8000,'吴':2500}
d2 = {'李2':1000}访问、运算
d1.keys() #字典的键
d1.values() #字典的值
d1.update(d2) #合并字典
d1['李'] #访问李
进阶:推导式
推导式还是比较方便的,相当于把for循环简写了,但是要脑子清晰,不然容易绕。
[x.upper() for x in 'abcde'] #将'abcde'大写,遍历字符串中的每个值
[x.upper() for x in 'abcaade' if x=='a'] #调出字符串中的a,并大写
[x for x in range(10) if x%3==0] #在0-9(不包含10)的数字中,求出3的倍数
list1 = ['a','b','c','d']
list2 = [1,2,3,4]
dict1 = {x:y for x,y in zip(list1,list2)} #将list1、list2配对成字典
专栏列表