一.续基本数据类型
1.数字(Number)
我们知道,Python3支持int,float,bool,complex(复数)
列出一些简单的例子:
361, -361, 0, 66666 # 整型 --> int()
3.61, 3.14e-6, 0.0 # 浮点型 --> float()
3+6j, 3.0+6.0j, 6j # 复数 --> complex([real[, imag]])
01101010 # 二进制 --> bin()
0o177 # 八进制 --> oct()
0x9ff # 十六进制 --> hex()
# 常见操作
+, -, *, /, //, %, ** # / 结果是浮点数,// 结果只取整数部分
&, |, ^, <<, >> # 位操作,与,或,异或,左移,右移
其中整型我们易于理解,而浮点型有两种,一种为十进制数形式,另一种为指数形式,如3.14e-6,即为3.14*10^-6
至于复数,它由实部和虚部组成可以用a+bj或complex(a,b)来表示,其中实部a和虚部b都是浮点型
而bool()函数较为有趣
Python 3.7.1 (default, Dec 14 2018, 13:28:58)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
>>> issubclass(bool,int)
True
>>> bool(' ')
True
>>> bool("")
False
>>> bool(" ")
True
>>> bool('')
False
>>> bool('A')
True
由上面我们可以看到Ture==1,False==0,单纯调用bool()函数会输出false.....下图一目了然
2.列表
首先,列表内元素类型可以不同,它支持数字,字符串,甚至包含列表(嵌套)
列表是写在[ ]之间,用逗号分隔开的元素列表
与字符串相同,列表同样也能被索引和截取,语法格式如下:
变量[头下标:尾下标]
索引从左往右以0开始,从右往左以-1开始
同样+是列表连接运算符,*为重复操作
#!/usr/bin/python3
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 输出完整列表
print (list[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list + tinylist) # 连接列表
输出,中括号视作前闭后开
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
与字符串不同,列表中的元素可改变
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
列表截取可以接收第三个参数,用于确定截取的步长,第三个参数为负数时逆向读取
3.元组Tuple
与列表不同在于,元组里的元素不能修改,写在( )里,用,隔开
截取类比上面两类
构造包含0或1个元素的元组有特殊语法规则
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
4.Set 集合
可以使用{}或者set()创造集合,造空集必须使用set()
实例
#!/usr/bin/python3
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
此处,所谓a和b的差集,即所有属于a且不属于b的元素组成的集合
而^可由下图表示
5.字典Dictionary
1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的'':''隔开
2.键在字典中是唯一的,不能有重复,对于字符型的键需要用引号引起来。值可以是单个值,也可以是多个值构成的列表,元组或字典
3.字典不再是序列,无法通过为止索引完成元素值的获取,只能通过键索引实现。
4.字典与列表一样,都是可变类型的数据结构。
下面我们给个例子
dict1={'姓名':'张三','年龄':'33','性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
print(dict1)
print(dict1['年龄'])
print(dict1['子女']['儿子'])
print(dict1['兴趣'][1])
out:
{'姓名': '张三', '年龄': '33', '子女': {'儿子': '张四', '女儿': '张美'}, '性别': '男', '兴趣': ['踢球', '游泳', '唱歌']}
33
张四
游泳
然而字典的一些处理还远不止这些,以及各类运算符的复杂操作,我们明天再写。。。。。