数据结构
'''列表的三个特性
1、列表的元素可以改变
2、列表的元素是有序的
3、列表可以容纳任何对象
'''
fruit = ['pineapple','pear']
fruit.insert(1,'grape') #增加元素
print(fruit)
fruit.remove('pear') #删除元素
print(fruit)
fruit[0] = 'bananae' #改元素
print(fruit)
运行结果:
['pineapple', 'grape', 'pear']
['pineapple', 'grape']
['bananae', 'grape']
'''
字典特征:
1、字典中数据必须是以键值对的形式出现的
2、逻辑上讲,键是不能重复的,而值可以重复
3、字典中的键是不可以变的,也就是说不能修改;而值是可以变的,可修改的,可以是任何对象
'''
Dic_code={'bidu':'baidu','sina':'sina'}
print(Dic_code)
Dic_code['youku'] ='youku'#增加元素
print(Dic_code)
Dic_code.update({'fb':'facebook','tsla':'tsla'})#增加多个元素
print(Dic_code)
del Dic_code['youku']#删除元素
print(Dic_code)
运行结果:
{'sina': 'sina', 'bidu': 'baidu'}
{'sina': 'sina', 'bidu': 'baidu', 'youku': 'youku'}
{'sina': 'sina', 'bidu': 'baidu', 'tsla': 'tsla', 'fb': 'facebook', 'youku': 'youku'}
{'sina': 'sina', 'bidu': 'baidu', 'tsla': 'tsla', 'fb': 'facebook'}
'元组,可以理解为固定版的列表,因为元素值不可变。但是可以索引查看'
letters=(1,2,3)
print(letters)
运行结果:
(1, 2, 3)
小技巧:如果要改变元组的值,可以把元组转换为列表,在列表中改完后,再转换回元组。
'集合'\
'1、每个集合中的元素是无序的、不重复的任意对象'\
'2、通过集合判断数据的从属关系'\
'3、通过集合把数据结构中重复的元素减掉'
例:
a_set={1,2,3}
a_set.add(4)#集合增加元素
print(a_set)
a_set.discard(2)#集合删除元素
print(a_set)
运行结果:
{1, 2, 3, 4}
{1, 3, 4}
'数据结构技巧'
技巧1:
num_list= [5,2,4,3,1]
print(sorted(num_list),num_list) #对列表排序(不改变列表顺序,返回排序结果)
print(sorted(num_list,reverse=True)) #对列表逆向排序
运行结果:
[1, 2, 3, 4, 5] [5, 2, 4, 3, 1]
[5, 4, 3, 2, 1]
技巧2:
'列表解析式'
例:
import time
a= []
t0=time.clock()
foriinrange(1,20000):
a.append(i)
print(time.clock()-t0,'seconds process time')
t0=time.clock()
b= [i for i in range(1,20000)] #
print(time.clock()-t0,'seconds process time')
运行结果:
0.004409208407899885 seconds process time
0.0010066217236152017 seconds process time
技巧3:
'字典解析式'
d={i:i+1 for i in range(4)}
print(d)
g={i:j.upper() for i,j in zip(range(1,6),'abcde')}
print(g)
运行结果:
{0: 1, 1: 2, 2: 3, 3: 4}
{1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E'}
技巧4:
'循环列表时获取元素的索引'
letters= ['a','b','c','d','e']
for num,letter in enumerate(letters):
print(letter,' is ', num)