一、基本数据类型
1、各进制数字的表示和转换
2进制、8进制、16进制的数据在数字之前需要分别增加0b、0o、0x来表示。
>>> 10 #10进制 10 >>> 0b111 #2进制 7 >>> 0o777 #8进制 511 >>> 0xfeda #16进制 65242
各个进制的转换,2进制、8进制、10进制、16进制的转换方法分别为bin()、oct()、int()、hex()。
>>> bin(16) #10进制数转换为2进制 ‘0b10000‘ >>> bin(0o766)#8进制数转换为2进制 ‘0b111110110‘ >>> oct(0xfff)#16进制数转换为8进制 ‘0o7777‘ >>> oct(0b1101)#2进制数转换为8进制 ‘0o15‘ >>> int(0b1111)#2进制数转换为10进制 15 >>> int(0o117)#8进制数转换为10进制 79 >>> hex(0b11111111) #2进制数转换为16进制 ‘0xff‘ >>> hex(65535) #10进制数转换为16进制 ‘0xffff‘
2、布尔值
Python中的数值0、空值对象以及‘None’的布尔值都为False,其他都为True。
>>> bool(1.1) True >>> bool(0x00) #16进制的数值0 False >>> bool(‘‘) #空字符串 False >>> bool([1,2]) True >>> bool(()) False >>> bool(None) False
3、字符串
*多行字符串可以通过三引号表示:‘‘‘ ‘‘‘或""" """。
>>> s=‘‘‘ a b‘‘‘ >>> s ‘\na\nb‘
可以看到变量s在定义的时候使用了三引号,而在命令行格式中可以看到s的内容是‘\na\nb‘;其中的‘\n‘就表示了定义时候输入的换行符。这也可以通过s[0]看出:
>>> s[0] ‘\n‘
这里的‘\n‘也称为转义字符,转义字符在使用print()输出时是按格式显示的,比如换行符\n直接就输出换行,\t输出水平制表符。
>>> print(s) a b
*转义字符:一般为无法看见的特殊字符(如\n、\t等等)或者与语言本身语法有冲突的字符(如\‘表示‘,\\表示\)
#用print打印出‘hello \n world!‘ #\n需要通过转义字符表示 s=‘hello \\n world‘ print(s) print(‘hello \\n world‘)
*原始字符串:在原始字符串中所有字符都是所见即所得
>>> s=r‘\nabc\n‘ #这里就是原始字符串,其中的\n就是两个字符 >>> s[0] #访问第一个字符,即‘\‘ ‘\\‘ >>> #可以看出上面输出了‘\\‘,这里是普通字符串,其中以转移字符串表示了实际的‘\‘ >>> s[1] ‘n‘ >>> print(s) \nabc\n >>> len(s) 7
4、序列(str、list、tuple)
在Python中,str/list/tuple都是有序的数据组合,对于有序的组合,都可以使用下标的方法访问,也可以进行切片操作。
>>> ‘123‘[2] ‘3‘ >>> (1,2,5)[0] 1 >>> [1,2,3,‘a‘][-1] ‘a‘ >>> (1,2,3,4,5)[:5] (1, 2, 3, 4, 5) >>> "12345"[-1:] ‘5‘ >>> [1,2,3,4,5,6,7,8,9,10][1:10] [2, 3, 4, 5, 6, 7, 8, 9, 10]
5、str和list/tuple的相互转换
(1)直接通过类型转换函数:
>>> list(s) #字符串转换为列表 [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘] >>> tuple(s) #字符串转换为元组 (‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘) >>> tuple(list(s)) #列表转换为元组 (‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘) >>> list(tuple(s)) #元组转换为列表 [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘] >>> #可以看出str()方法并不能让列表转换成我们想要的字符串内容 >>> #str()方法直接把参数内容当成字符串内容了 >>> str([1,2,3]) ‘[1, 2, 3]‘ >>> str([1,2,3])[0] ‘[‘
(2)列表和元组转换为字符串必须依靠join函数
>>> ‘ ‘.join([‘1‘,‘2‘,‘3‘]) ‘1 2 3‘ >>> ‘‘.join((‘a‘,‘b‘,‘s‘,‘123‘)) ‘abs123‘
需要注意,只有元素为字符串类型的列表和元组才可以使用join()方法。
(3)字符串转为列表的特殊方法:split()
>>> s=‘12 34 56 78,90,100 ‘ >>> s.split() #没有参数时,默认按空格划分原始字符串形成列表各元素 [‘12‘, ‘34‘, ‘56‘, ‘78,90,100‘] >>> s.split(‘,‘) [‘12 34 56 78‘, ‘90‘, ‘100 ‘]
(4)字符串去除首尾空格、换行字符的方法:strip()
>>> s=‘\n \n 123 abc 999 \n ‘ >>> s.strip() ‘123 abc 999‘ >>> s ‘\n \n 123 abc 999 \n ‘ >>> s.strip().split() [‘123‘, ‘abc‘, ‘999‘]
(5)列表排序方法:sort()/sorted()
>>> l=[16,87,35,100,96,62,8,3,19] >>> l.sort() #把l按默认的顺序(这里是由小到大)排序,l变成新列表 >>> l1=[16,87,35,100,96,62,8,3,19] >>> sorted(l1) #返回一个排序后的新列表,l1本身不变化 [3, 8, 16, 19, 35, 62, 87, 96, 100] >>> l1 [16, 87, 35, 100, 96, 62, 8, 3, 19] >>> t=(16,87,35,100,96,62,8,3,19) #元组和字符串也可以使用sorted()方法,返回一个排序后的新列表 #但元组和字符串不能使用sort() >>> sorted(t) [3, 8, 16, 19, 35, 62, 87, 96, 100] >>> t (16, 87, 35, 100, 96, 62, 8, 3, 19) >>> sorted(‘102814124128765‘) [‘0‘, ‘1‘, ‘1‘, ‘1‘, ‘1‘, ‘2‘, ‘2‘, ‘2‘, ‘4‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘8‘]
6、集合(set)、字典(dict)
(1)集合是无序的,所以不能通过下标访问,也因为是无序的,所以对于重复的元素在集合中是无法区分的,因为没有顺序之说,所以集合中不能有重复元素。
>>> {1,2,3,4,5}-{1,3,5} #两个set求差集 {2, 4} >>> {1,2,3,4,5}|{6,7,8} #求合集 {1, 2, 3, 4, 5, 6, 7, 8} >>> {1,2,3,4,5,6,7}&{1,3,5,7,9} #求交集 {1, 3, 5, 7}
(2)字典是集合的一种特殊类型,其键值必须为不可变类型。不可变类型包括int/float/bool/str/tuple。