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':'','key':''} #重复的键值对,只会输出一个
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)

最新文章

  1. SQL Server 2012 学习笔记1
  2. 6/19 sprint3 看板和燃尽图的更新
  3. 【JavaScript学习笔记】鼠标样式
  4. PL/SQL在win7X 64下安装
  5. 数据存储简单了解(NSUserDefaults)
  6. SignalR2.0开发实例之——私聊
  7. 游戏对象、组件和Prefabs
  8. vs2010帮助文档下载以及帮助查看器(H3Viewer)的使用
  9. repeat a string in java
  10. 用For Each语句对Session.Contents树组进行遍历
  11. javaweb中的关于编码问题总结
  12. cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配
  13. Spring MVC深入学习
  14. JQuery实现旋转轮播图
  15. python3 random模块
  16. EvansClassification
  17. vue2 设置网页title的问题
  18. 了解真实的rem手机屏幕适配
  19. Codeforces965E Short Code 【启发式合并】【堆】
  20. tar加密

热门文章

  1. BZOJ1935: [Shoi2007]Tree 园丁的烦恼(树状数组 二维数点)
  2. pipenv虚拟环境和依赖管理工具
  3. 宝塔面板nginx配置安装Discuz
  4. pom.xml配置文件内容记录
  5. React-Native开发之BUG 总结
  6. Flutter TabBar
  7. 软工读书笔记 week 8 —— 《疯狂的程序员》
  8. 3.如何在Maven项目中引入自己的jar包
  9. JAVA 判断字符长度
  10. 如何制作 Objective-C 的UML图 [2]