Python 基础知识:数据类型
Python中基本的数据类型有Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)等。
用type()可以查看变量和常量的数据类型:
>>> a1 = 23
>>> print(type(a1))
<class 'int'>
>>> a, b, c, d=20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
>>>
>>> l, t, s = [3,2,5], (1,3,4), {'zhang':4, 'wang':6, 'liu':25}
>>> print(type(l), type(t), type(s))
<class 'list'> <class 'tuple'> <class 'dict'>
Python支持 int、float、bool、complex(复数)。当定义一个变量并引用数字时,Number 对象被创建。
>>> num1 = 5
>>> num2 = 7+8j
创建的Number对象,可以通过del语句进行删除。
>>> del num1
>>> del num2
注意:
Python可以处理任意大小的整数(包括负整数),整数的表示方法和数学上的写法一样。如3,200,-9080,0,1 ……
。 Python语言中整数的二进制、八进制和十六进制表示:
二进制 0b或0B 由字符0和1组成,如0b101、0B101
八进制 0o或0O 由字符0到7组成,如0o711、0O711
十六进制 0x或0X 由字符0到9、a到f、A到F组成,如0xABC
十进制转二进制,八进制,十六进制,格式如下:
>>> a = bin(1010) # 二进制
>>> b = oct(1010) # 八进制
>>> c = hex(1010) # 十六进制
>>> print(str(a),str(b),str(c))
0b1111110010 0o1762 0x3f2
浮点数就是小数。按科学计数法表示时,浮点数的小数点是可变的,如1.23×10^9和12.3×10^8是相等的。可以把10用e替代,1.23×10^9就是1.23e9,或是12.3e8,0.000012可以写成1.2e-5。
>>> c1 = 1.34e3
>>> print(c1)
1340.0
>>> c2 = 1.343e-3
>>> print(c2)
0.001343
浮点数和整数在计算机内部存储方式不同,整数是精确的,而浮点数运算时会有四舍五入的误差。
布尔值只有True、False两种值,非True则False,注意大小写。 vv >>> flag = True >>> num = 4 >>> while flag: ... print("张三") ... num = num-1 ... if num == 0: ... flag = False ... 张三 张三 张三 张三 >>>
上述示例中while为一个循环语句,当flag为True时,循环执行后面的语句,if为一个判断语句,当num=0成立时,执行下面的语句。在上面示例中要注意if num == 0中的“==”不要写成“=”。“==”表示判断是否相等,而“=”表示赋值,例如flag=False表示将False的值赋给flag变量。
注意:
前面讲过在Python Shell交互环境下编写代码时,>>>是Python解释器的提示符,不是代码的一部分,同样上面示例中出现的...也是一个提示符,表示待输入代码。
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a, b)表示, 复数的实部 a 和虚部 b 都可以是浮点型。
>>> complex(3, 4)
(3+4j)
字符串是以"或'括起来的任意文本(如'abc',"xyz")。 "或'本身只是一种表示方式,不是字符串的一部分。因此,字符串'abc'只有a,b,c这三个字符。
>>> my = 'ab,c'
>>> print(my)
ab,c
访问子字符串,可以使用方括号来截取字符串。
>>> my= "Good morning"
>>> print("my[0]:", my[0])
my[0]: G
>>>
>>> print("my[0:8]:", my[0:8])
my[0:8]: Good mor
可以截取字符串的一部分并与其他字符串拼接。
my= "Hello"
>>> print(my[:6] + " 张三")
Hello 张三
>>>
列表(list)是Python中最基本的数据结构。列表中的每个元素都分配一个索引,第一个索引是0,第二个是1,依次类推。 在Python中定义列表需要使用方括号,列表中的数据项都包含在方括号中,数据项之间使用逗号分隔。
(1) 列表中的数据可以是任意数据类型,甚至可以是不同类型的混合。
>>> list = [3, 4, 'abc', "张三"]
>>> print(list)
[3, 4, 'abc', '张三']
(2) 列表中的数据除了基本的数据类型,还可以是其他复杂的数据结构。
>>> list = [ 3, 4, 'a', [3, 4, 5] ]
>>> print(list)
[3, 4, 'a', [3, 4, 5]]
列表创建完成后,可以进行访问、修改、删除、插入等操作,即列表是可变的数据类型。
(1) 访问列表中的值
使用下标索引来访问列表中的值,同样也可以使用方括号的形式截取字符。
>>> li = ['物理, '化学', 2019, 2020]
>>> print("li[0]:", li[0]) #访问列表的第一个元素。
li[0]: 物理
>>> print("li[2]:", li[2])
li[2]: 2019
(2) 修改列表项
可以对列表的数据项进行修改。
>>> li = ['物理, '化学', 2019, 2020]
>>> print("li[2]:", li[2])
li[2]: 2019
>>> li[2] = 2003 #修改列表
>>> print("li[2]:", li[2])
li[2]: 2003
>>> print(li)
['物理', '化学', 2003, 2020]
(3) 删除列表中的元素
可以使用del或pop()函数来删除列表中指定位置的元素。
>>> li = ['物理', '化学', 2003, 2020]
>>> print(li)
['物理', '化学', 2003, 2020]
>>> del li[2]
>>> print(li)
['物理', '化学', 2020]
>>> li.pop(1)
'化学'
>>> print(li)
['物理', 2020]
(4) 在某一位置插入元素
用 insert(i, x) 函数在位置 i 处插入元素 x,原来 i 位置及其后的元素依次后移,也可以使用append()方法在末尾添加元素。
>>> li = ['物理', '化学', 2003, 2020]
>>> print(li)
['物理', '化学', 2003, 2020]
>>> li.insert(2, '王五')
['物理', '化学', '王五', 2003, 2020]
>>>
>>> li.append("李四")
>>> print(li)
['物理', '化学', '王五', 2003, 2020, '李四']
元组(tuple)和列表十分类似,只是元组的元素是不可变的,即不能修改元组。正是由于元组不可变,一般用于Python中定义一组不需要改变的值。在Python中定义元组使用圆括号,元组中的项目同样使用逗号分隔。
>>> tu = (4, 5, 7, '张三')
>>> print(tu)
(4, 5, 7, '张三')
空的元组由一对空的圆括号组成,如tu1=()
。
注意:
定义只有1个元素的元组时,必须要在这个元素后面跟一个逗号。
>>> a = (1)
>>> type(a)
<class 'int'>
>>> print(a)
1
>>>
>>> tu = (1, )
>>> type(tu)
<class 'tuple'>
>>> print(tu)
(1,)
字典(dict)这种数据结构类似通讯录,有一个名字和名字对应的信息,可以通过名字查找对应的信息,在字典中名字叫‘键’,对应的内容叫‘值’。字典就是一个键/值对(key/value)的集合。在Python中定义字典使用花括号,字典中的键/值对之间使用逗号分隔,键和值之间用冒号分隔。
>>> dict = {'name':'张三', 'sex':'男', 'major':'软件技术'}
>>> print(dict)
{'name':'张三', 'sex':'男', 'major':'软件技术'}
>>> print(dict['major'])
软件技术
操作字典
(1) 把数据放入dict
可以直接对单个键赋值的方法来将数据放入字典。
>>> dict = {'name':'张三', 'sex':'男', 'major':'软件技术'}
>>> print(dict)
{'name':'张三', 'sex':'男', 'major':'软件技术'}
>>> dict['city'] = '广州'
>>> print(dict)
{'name':'张三', 'sex':'男', 'major':'软件技术','city':'广州'}
(2) 由于一个key只对应一个value,所以,多次对一个key放入value,后面的值会把前面的值覆盖。
>>> dict = {'name':'张三', 'sex':'男', 'major':'软件技术','city':'广州'}
>>> dict['name'] = '李四'
>>> print(dict)
{'name':'李四', 'sex':'男', 'major':'软件技术','city':'广州'}
>>> dict['name'] = '王麻子'
>>> print(dict)
{'name':'王麻子', 'sex':'男', 'major':'软件技术','city':'广州'}
(3) 删除键/值
对
用pop(key)的方法删除一个键值对,对应的value也会从dict中删除。
>>> dict = {'name':'王麻子', 'sex':'男', 'major':'软件技术','city':'广州'}
>>> dict.pop('city')
'广州'
>>> print(dict)
{'name':'王麻子', 'sex':'男', 'major':'软件技术'}
集合是一组无序的唯一元素序列。可以使用大括号{ }
或者 set()
函数创建集合,而创建一个空集合必须用 set()
函数而不是 大括号{ }
,因为 { }
是用来创建一个空字典。并没有像列表和字典的那样的内置语法创建一个空集合,只能使用set()
来达到这个目的,但可以用大括号{ }
来创建一个集合,只要集合中包含值。对字典来说,用冒号将一对键值分开,每对键值之间用逗号间隔,如{'key1':'value1','key2':'value2'}
;对集合而言,只要使用逗号来分割值即可,如{'value1','value2'}
。
>>> student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
>>> print(student) # 输出集合,重复的元素被自动去掉
{'Mary', 'Jim', 'Jack', 'Rose', 'Tom'}
>>> a = set('abracadabra¡')
>>> print(a)
{'c', '¡', 'b', 'd', 'r', 'a'}
>>>
若留意输出的结果,则会看到集合中的元素并没有按照加入时的顺序展示出来,这是因为集合是无序的,所以不能对其进行索引查找。使用集合的主要目的是将全部事物分为两组:“属于集合的事物
”和“不属于集合的事物
”。
>>> 'Mary' in student
True
>>> 'naicy' in student
False
>>>
集合的基本操作
1. 添加元素>>> my_set = set()
>>> my_set.add('hello') #将元素`'hello'`添加到集合my_set中,如果元素已存在,则不进行任何操作
>>> print(my_set)
{'hello'}
>>> my_set.update({1,2},[3,4],(5,6),{'a':7,'b':8}) #添加元素,且参数可以是集合,列表,元组,字典等
>>> print(my_set)
{1, 2, 3, 4, 5, 6, 'b', 'a', 'hello'}
>>>
2.移除元素
>>> my_set.remove('hello') #将元素'hello'从集合my_set中移除,如果元素不存在,则会发生错误
>>> print(my_set)
{1, 2, 3, 4, 5, 6, 'b', 'a'}
>>> my_set.discard('hello') #还有一个方法discard(),将元素'hello'从集合my_set中移除,如果元素不存在,则不会发生错误
>>> print(my_set)
{1, 2, 3, 4, 5, 6, 'b', 'a'}
>>> my_set.pop() #随机删除集合中的一个元素
1
>>> print(my_set)
{2, 3, 4, 5, 6, 'b', 'a'}
>>>
3.计算集合元素个数
>>> len(my_set)
7
>>>
4.清空集合
>>> my_set.clear()
>>> print(my_set)
set()
>>>
5. 集合的运算
>>> s1 = set(['a','b','c','d'])
>>> s2 = set('cdef')
>>> A = s1 | s2 #求集合s1与集合s2的并集
>>> print(A)
{'c', 'e', 'f', 'b', 'd', 'a'}
>>> B = s1 & s2 #求集合s1与集合s2的交集
>>> print(B)
{'c', 'd'}
>>> C = s1 - s2 #求集合s1与集合s2的差集,该集合是s1的成员,但不是s2的成员
>>> print(C)
{'b', 'a'}
>>> D = s1 ^ s2 #求集合s1与集合s2的差分(对称差集),是集合的异或运算,该集合是s1或s2的成员,但不是s1和s2共有的成员
>>> print(D)
{'e', 'f', 'b', 'a'}
>>>
博文最后更新时间: