Python有4种数据结构:列表(list)、字典(dictionary)、元组(Tuple)、集合(set)。从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是花括号,元组是圆括号,其中字典中的元素都是带有“:”的key-value对应关系组。
1、列表(List)
#1、列表中的每一个元素都是可以变的 #2、列表中的元素都是有序的,也就是说每一个元素都有一个位置 #3、列表可以容纳Python中的任何对象 fruit = ['Apple','Orange','pear'] fruit.insert(1,'grape') #在第二个数据前面插入 print(fruit) fruit.remove('pear') #删除 print(fruit) fruit[0] = 'Grapefruit' #替换 print(fruit)
2、字典(Dictionary)
#1、字典中数据必须是以键值对的形式出现 #2、逻辑上,键是不能重复的,而值可以重复 #3、字典中的键Key是不可变的,也就是无法修改的。而值Value是可变的,可修改的,可以是任何对象 a = {'key':'123','key':'123'} #重复的键值对,只会输出一个 print(a) Nasdaq_code = {'BIDU':'baidu','SINA':'sina'} Nasdaq_code['YOKU'] = 'youku' #添加元素 print(Nasdaq_code) Nasdaq_code.update({'FB':'facebook','TSLA':'Tesla'}) #批量添加 print(Nasdaq_code) del Nasdaq_code['FB'] #删除元素 print(Nasdaq_code)
3、元组(Tuple)
#1、元组不可修改 #2、元组可被查看索引,方式同列表 letters = ('a','b','c','d','e','f') print(letters[0])
4、集合(Set)
#1、集合中的元素是无序、不重复的任何对象 #2、集合不能被切片也不能被索引。可做集合运算,集合元素可以被添加还有删除 a_set = {1,2,3,4} a_set.add(5) #添加 print(a_set) a_set.discard(5) #删除 print(a_set)
5、推导式(列表解析式)
现在我有10个元素要装进列表中,普通的写法是这样的:
下面换成列表解析的方式来写,是这样的:
如下图,列表推导式可以简单的看成两部分。红色虚线后面的是我们熟悉的for循环表达式,虚线前面的可以认为是我们想要放在列表中的元素。
列表解析式的执行效率比较:(列表解析式的执行效率较高,性能较优)
#推导式 list = [item for item in iterable],先iterable,在进行item的输出 import time a=[] t0 = time.clock() for i in range(1,2000):#使用循环时的执行时间 a.append(i) print(time.clock() - t0,'seconds process time') t0 = time.clock() b=[i for i in range(1,200)]#使用列表解析式的执行时间 print(time.clock() - t0,'seconds process time')
#列表解析式示例 a = [i**2 for i in range(1,10)] print(a) c = [j+1 for j in range(1,10)] print(c) k = [n for n in range(1,10) if n %2 ==0] print(k) z = [letter.lower() for letter in 'ABCDEFGHIGKLMN'] print(z) d = {i:i+1 for i in range(4)} print(d) g = {i:j for i,j in zip(range(1,6),'abcde')} print(g) l = {i:j.upper() for i,j in zip(range(1,6),'abcde')} print(l)