Python内置数据类型
一、list列表
list是一种可变的有序集合
,可以随时添加和删除其中的元素。
list中元素的数据类型可以不一样,也可以再嵌套list
empty_list = [] #空列表
classmates = ['Michael', 'Bob', 'Tracy']
len(classmates) #3
classmates[0] #'Michael'
classmates[-1] #取最后一个元素,'Tracy'
classmates[-2] #取倒数第二个元素
classmates.append('Adam') #追加元素到末尾
classmates.insert(1, 'Jack') #插入元素到指定位置,比如插到索引号为1的位置
classmates.pop() #删除末尾的元素,并返回被删除的元素
classmates.pop(1) #删除并返回指定位置的元素,1是索引号
classmates[1] = 'Sarah' #把某个元素替换成别的元素,直接索引赋值
classmates.sort() #对元素进行排序
当索引超出了范围时,Python会报一个IndexError
错误
二、tuple
tuple是一种不可变的有序列表
,tuple和list非常类似,但是tuple一旦初始化就不能修改。没有append(),insert()这样的方法,只能用索引获取元素。
因为tuple不可变,所以代码更安全。
当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来。
t = () #定义一个空tuple
t = (1,) #元组只有一个元素时必须这么定义。如果是 t = (1),小括号被当作运算符括号,t是个整数1
“可变的tuple”:
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
t #('a', 'b', ['X', 'Y'])
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
三、dict
使用键-值(key-value)存储,具有极快的查找速度。key无重复值。
d = {}
d['Adam'] = 67 #除初始化外,通过key值放入
d['Adam'] = 90 #多次对一个key放入value,后面的值会把前面的值冲掉
#如果key不存在,dict就会报错
#避免key不存在的错误
'Thomas' in d #通过in判断key是否存在
d.get('Thomas') #key不存在,返回None
d.get('Thomas', -1) #key不存在,返回自己指定的value
d.pop('Bob') #删除一个key
dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
所以,dict是用空间来换取时间的一种方法。
dict的key必须是不可变对象。 字符串、整数是不可变的,list是可变的
四、set
与dict类似,也是一组key的集合,但不存储value,也没有重复的key。set是无序的。
s = set([1, 2, 3]) #要创建一个set,需要提供一个list作为输入集合
s.add(4) #添加元素,可以重复添加但不会有效果
s.remove(4) #删除元素
#set可以看成数学意义上的无序和无重复元素的集合
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s1 & s2 #交集
s1 | s2 #并集
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象。
五、不可变对象
之前有提过,str,整数是不变对象,而list是可变对象。
a = 'abc'
b = a.replace('a', 'A')
b #'Abc'
a #'abc'
a是变量,而’abc’才是字符串对象,a指向的对象的内容才是’abc’。
当调用replace时,并没有改变字符串abc的内容,replace创建了一个新字符串Abc并返回,然后用变量b指向该新字符串。
所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
六、条件判断
只要if后是非零数值、非空字符串、非空list等,就判断为True,否则为False。
七、循环
for...in...
依次把list或tuple中的每个元素迭代出来,for x in ...
就是把每个元素代入变量x,然后执行缩进块的语句。
range()
生成一个整数序列,生成的序列是从0开始小于括号内参数的整数。可以再通过list()
函数可以转换为list。
sum = 0
for x in range(101):
sum = sum + x
print(sum)
list(range(1,11)) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],从1开始,小于11