Python内置的数据类型列表:list
有序的,可随时添加删除其中元素
a = ['1','r','ppt']
用len()函数可以获得list元素个数:
len(a)
用索引来访问list中每元素,索引从0开始:
a[2]
索引超出了范围时,Python会报一个IndexError错误,不要越界,确保最后一个索引是:
len(a) - 1
可以用-1
做索引,直接获取最后一个元素:
a[-1]
末尾追加:
a.append('word')
元素插入指定位置1处:
a.insert(1,'nsi')
删除list末尾的元素:
a.pop()
删除指定位置2处的元素:
a.pop(2)
将某个元素替换别的元素:
a[1] = b
list元素的数据类型也可以不同:
a = ['a' , 90 , True]
list中的list:
>>> a = ['b' , ['d' , 1 , False] , 89]
>>> a[1][2]
False
啥?上面 a
变量有多少个元素呢? 3个
空list,长度为 0 :
a = []
tuple元组,和list很类似,但是:
- tuple一旦初始化就不能修改
- 没有
append()
、insert()
,没有修改,但是可以获取查询元素
t = (1 , 2 , 'rt')
tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
只有1个元素的tuple定义时必须加一个逗号 ,
:
t = (8,)
list与tuple嵌入使用:
>>> t = ['o' , 'p' , ('A', 1 ,Ture) , 2016]
>>> t[1]
p
t[2][0]
A
if 9 < 5:
print('?')
elif 0 <-1 :
print('??')
else:
print('!')
*注意冒号
:
*注意缩进
只要条件变量是非零数值、非空字符串、非空list等,就判断为True,否则为False:
# i 未定义,在这里为False
if i:
print('?')
else:
print('!')
再说下input输入,input输入的所有内容都是
str
类型!!
ir = input('输入整数:')
if ir > 20: # 错误,不能比较,因为ir变量是 str
类型
print('?')
else:
print('??')
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
Python内置的 range()
函数,可以生成一个整数序列:
>>> range(5)
[0,1,2,3,4]
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
break
语句可以提前退出循环
continue
语句跳过当前的这次循环
字典(dict),全称:dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
>>> student = {"张三" : 90 , "李四" : 84, "王五" : 96 }
>>> student['李四']
84
为什么dict查找速度这么快?
因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。 第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
添加数据到dict:
student['赵六'] = 98
对同一key赋值,后面的值覆盖前面的值
避免key不存在dict就会报错:
- 通过in判断key是否存在
'老二' in student
- 通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value
>>> student.get('老二') None >>> student.get('老二',-1) -1
删除dict:
student.pop('赵六')
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
dict的key必须是不可变对象
因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key
set和dict类似,是一组key的集合,不存储value。
由于key不能重复,所以,在set中,没有重复的key。
set 的创建,必须提供一个list作为输入集合:
s = set([1,2,3])
>>> s
{1,2,3}
set 的添加:
s.add(4)
set 的删除:
s.remove(2)
set 可以做交集与并集:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
list是有序的,可变对象,str 是不变对象,dict是无序的
总结:
list
a = [1,Ture,2016,'畜生']
tuple
b =(1,2,3,False)
dict
c = {"张三" : 90 , "李四" : 84, "王五" : 96 }
set
d =set([1,Ture,2016,'畜生'])
->d = {1,Ture,2016,'畜生'}
注意括号