基础数据类型
整数
例如:1,100,-8080,0,等等
浮点数
如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。
字符串
单引号 '
或双引号 "
括起来的任意文本,比如’abc’,”xyz”等等。请注意, ''
或 ""
本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果 '
本身也是一个字符,那就可以用 ""
括起来,比如”I’m OK”包含的字符是I,’,m,空格,O,K这6个字符。
转义字符
如果字符串内部既包含 '
又包含 "
怎么办?可以用转义字符\来标识,比如:
转义字符\可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以 \\
表示的字符就是\
。
如果字符串里面有很多字符都需要转义,就需要加很多\
,为了简化,Python还允许用r''
表示''
内部的字符串默认不转义
1 2 3 4 5
| >>> print('\\\t\\') \ \ >>> print(r'\\\t\\') \\\t\\
|
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容
1 2 3 4 5 6 7
| >>> print('''line1 line2 line3''')
line1 line2 line3
|
布尔值
一个布尔值只有True、False两种值,也可以通过布尔运算计算出来:
1 2 3 4 5 6 7 8
| >>> True True >>> False False >>> 3 > 2 True >>> 3 > 5 False
|
布尔值可以用and、or和not运算符表示 与、或、非
1 2 3 4 5 6
| >>> True and False False >>> True or False True >>> not True False
|
空值
用None表示
变量
变量是一个指向一个空间的赋值行为
1 2 3
| a = 100 a = 'hello python' a = True
|
1 2 3 4
| a = 'ABC' b = a a = 'XYZ' print(b) # 'ABC'
|
运算符
在Python中,有两种除法,一种除法是/
:
1 2
| >>> 10 / 3 3.3333333333333335
|
/
除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
还有一种除法是//
,称为地板除,两个整数的除法仍然是整数:
因为//
除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:
复杂数据类型
list
list是一种有序的集合,可以随时添加和删除其中的元素
1 2 3 4 5 6 7 8 9 10 11 12
| >>> classmates = ['Michael', 'Bob', 'Tracy']
# 用len()函数可以获得list元素的个数 >>> len(classmates) 3
>>> classmates[0] 'Michael'
# 用-1做索引,直接获取最后一个元素 >>> classmates[-1] 'Tracy'
|
往list中追加元素到末尾:
1 2 3
| >>> classmates.append('Adam') >>> classmates ['Michael', 'Bob', 'Tracy', 'Adam']
|
把元素插入到指定的位置,比如索引号为1的位置:
1 2 3
| >>> classmates.insert(1, 'Jack') >>> classmates ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
|
删除list末尾的元素,用pop()方法:
1 2 3 4
| >>> classmates.pop() 'Adam' >>> classmates ['Michael', 'Jack', 'Bob', 'Tracy']
|
删除指定位置的元素,用pop(i)方法,其中i是索引位置:
1 2 3 4
| >>> classmates.pop(1) 'Jack' >>> classmates ['Michael', 'Bob', 'Tracy']
|
tuple
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。
当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来:
1 2 3
| >>> t = (1, 2) >>> t (1, 2)
|
如果要定义一个空的tuple,可以写成():
要定义一个只有1个元素的tuple时必须加一个逗号,
,来消除歧义:
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
1 2 3 4 5
| >>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])
|
指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的
dict
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
1 2 3
| >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95
|
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
1 2 3
| >>> d['Adam'] = 67 >>> d['Adam'] 67
|
如果key不存在,dict就会报错:
1 2 3 4
| >>> d['Thomas'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Thomas'
|
要避免key不存在的错误,有两种办法
一是通过in判断key是否存在:
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
1 2 3
| >>> d.get('Thomas') >>> d.get('Thomas', -1) -1
|
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
1 2 3 4
| >>> d.pop('Bob') 75 >>> d {'Michael': 95, 'Tracy': 85}
|
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
1 2 3
| >>> s = set([1, 2, 3]) >>> s {1, 2, 3}
|
重复元素在set中自动被过滤:
1 2 3
| >>> s = set([1, 1, 2, 2, 3, 3]) >>> s {1, 2, 3}
|
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
1 2 3 4 5 6
| >>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}
|
通过remove(key)方法可以删除元素:
1 2 3
| >>> s.remove(4) >>> s {1, 2, 3}
|
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
1 2 3 4 5 6
| >>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}
|
条件判断
1 2 3 4 5 6 7
| age = 3 if age >= 18: print('adult') elif age >= 6: print('teenager') else: print('kid')
|
循环
for…in循环
1 2 3 4
| sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum)
|
如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。range(101)就可以生成0-100的整数序列,计算如下:
1 2 3 4
| sum = 0 for x in range(101): sum = sum + x print(sum)
|
while循环
只要条件满足,就不断循环,条件不满足时退出循环。
比如我们要计算100以内所有奇数之和,可以用while循环实现:
1 2 3 4 5 6
| sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum)
|