在内存存储的数据可以有多种类型。例如,人的姓名可以用字符型存储、年龄可以使用数值型存储、而婚否可以使用布尔类型存储。这些都是Python中提供的基本数据类型。
变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
变量可以通过变量名访问。在 Python 中 变量命名规定,必须是大小写英文,数字和 下划线(_)的组合,并且不能用数字开头。
变量命名规则:
- 变量名只能是字母,数字和下划线的任意组合
- 变量名第一个字符不能是数字
- 变量名区分大小写,大小写字母被认为是两个不同的字符
- 特殊关键字不能命名为变量名
并且变量也可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
一般常见的数据类型有以下六种:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Sets(集合)
Dictionary(字典)
根据可变与不可变类型又可以分为以下两种:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
Number(数字)
数字类型是顾名思义是用来存储数值的,需要记住的是,有点和 Java 的字符串味道差不多,如果改变了数字数据类型的值,将重新分配内存空间。
Python 支持三种不同的数值类型:
- 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
- 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
- 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
name = '张三' #字符串 age = 18 #整型 height = 1.88 #浮点型 #打印变量类型 print(type(name)) print(type(age)) print(type(height)) ''' 输出 <class 'str'> <class 'int'> <class 'float'> '''
String(字符串)
字符串或串(String)是由数字、字母、下划线组成的一串字符。
创建字符串可以使用单引号、双引号、三单引号和三双引号,这三种形式实际上没有区别,只是在形式上有不同。
str1 = '先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。' str2 = "然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。" str3 = '''诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。 宫中府中,俱为一体,陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。 侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。 print(1, str1) print(2, str2) print(3, str3) ''' 输出 1 先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。 2 然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。 3 诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。 宫中府中,俱为一体,陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。 侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。 '''
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
我们定义一个 s='python'语句,它在计算机中的执行顺序是先在内存中创建一个字符串 Python ,在程序栈寄存器中创建一个变量 s,最后把 Python 的地址赋给s 。
Python 访问字符串中的值
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
str = 'apple' print(str[1:5]) ''' 输出 pple '''
Python 字符串连接
va1 = 'hello world' print(va1, ',python') print(va1+'+python') ''' 输出 hello world ,python hello world+python '''
点击了解字符串详情:
https://www.runoob.com/python/python-strings.html
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。它的元素是可以改变的。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
zhangsan_info = ['张三', 22, 55, '北京'] print(zhangsan_info) ''' 输出 ['张三', 22, 55, '北京'] '''
访问列表中的值
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符。
list1 = ['Carter', 'Kobe', 'Iverson', 'McGrady'] list2 = [1, 2, 3, 4, 5, 6, 7] print(list1[0]) print(list2[0:2]) ''' 输出 Carter [1, 2] '''
更新列表
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项。
list = [] list.append('Jordan') list.append('Kobe') print(list) ''' 输出 ['Jordan', 'Kobe'] '''
删除列表元素
可以使用 del 语句来删除列表的元素。
list = ['Jordan','Carter', 'Kobe', 'Iverson', 'McGrady'] print(list) del list[0] print(list) ''' 输出 ['Jordan', 'Carter', 'Kobe', 'Iverson', 'McGrady'] ['Carter', 'Kobe', 'Iverson', 'McGrady'] '''
点击了解列表详情:
https://www.runoob.com/python/python-lists.html
Tuple(元组)
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
lisi_info = ('李四', 22, 55, '北京') print(lisi_info) ''' 输出 ('李四', 22, 55, '北京') '''
创建空元组
#创建一个空元组 tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号。
#创建致函一个元素的元组 tup1 = (55,)
访问元组
元组可以使用下标索引来访问元组中的值类似于列表一样。
tup1 = ('Carter', 'Kobe', 'Iverson', 'McGrady') tup2 = (1, 2, 3, 4, 5, 6, 7) print(tup1[0]) print(tup2[0:2]) ''' 输出 Carter (1, 2) '''
修改元组
前面提到过元组中的元素值是不允许修改的
tup1 = ('Carter', 'Kobe', 'Iverson', 'McGrady') #错误示范 tup1[1] = ('bryant') print(tup1) ''' 输出 TypeError: 'tuple' object does not support item assignment '''
但我们可以对元组进行连接组合。
tup1 = ('Carter', 'Kobe', 'Iverson', 'McGrady') tup2 = (1, 2, 3, 4, 5, 6, 7) tup = tup1 + tup2 print(tup) ''' 输出 ('Carter', 'Kobe', 'Iverson', 'McGrady', 1, 2, 3, 4, 5, 6, 7) '''
删除元组
元组中的元素值是不允许删除的
tup1 = ('Carter', 'Kobe', 'Iverson', 'McGrady') #错误演示 del tup1[1] print(tup1) ''' 输出 TypeError: 'tuple' object doesn't support item deletion '''
但我们可以使用del语句来删除整个元组。 以上实例元组被删除后,输出变量会有异常信息。
点击了解元组详情:
https://www.runoob.com/python/python-tuples.html
集合(set)
集合(set)是一个无序不重复元素的序列,使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {} ,因为 {} 是用来创建一个空字典。
parame = {value01,value02,...} 或者 set(value)
集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除:
a_set = {1,2,3,4} # 添加 a_set.add(5) print(a_set) # 输出{1, 2, 3, 4, 5} # 删除 a_set.discard(5) print(a_set) # 输出{1, 2, 3, 4} ''' 输出 {1, 2, 3, 4, 5} {1, 2, 3, 4} '''
添加元素
使用add()将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) #添加不存在的数据 set1.add('Jordan') #添加已存在的数据 set1.add('Carter') print(set1) ''' 输出 {'Carter', 'Jordan', 'Kobe', 'McGrady', 'Iverson'} '''
添加元素
使用add()将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) #添加不存在的数据 set1.add('Jordan') #添加已存在的数据 set1.add('Carter') print(set1) ''' 输出 {'Carter', 'Jordan', 'Kobe', 'McGrady', 'Iverson'} '''
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,可以自己尝试一下。
s.update( x )
移除元素
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) #删除已存在的数据 set1.remove('Carter') print(set1) ''' 输出 {'Iverson', 'Kobe', 'McGrady'} '''
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) #删除不存在的数据 set1.remove('Carter666') print(set1) ''' 输出 KeyError: 'Carter666' '''
计算集合元素个数
使用len()方法统计集合元素个数
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) print(len(set1)) ''' 输出 4 '''
清空集合
使用clear()方法统计集合元素个数
set1 = set(('Carter', 'Kobe', 'Iverson', 'McGrady')) set1.clear() print(set1) print(len(set1)) ''' 输出 set() 0 '''
点击了解集合详情:
https://www.runoob.com/python3/python3-set.html
Dictionary(字典)
字典是一种映射类型,它的元素是键值对,字典的关键字必须为不可变类型,且不能重复。创建空字典使用 {} 。
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'} print(tinydict) ''' 输出 {'name': 'runoob', 'code': 6734, 'dept': 'sales'} '''
访问字典
把需要访问的值的键放入到方括号中
tinydict = {'name': '张三','age':18, 'dept': 'sales'} print('name:',tinydict['name']) ''' 输出 name: 张三 '''
如果用字典里没有的键访问数据,会输出错误
tinydict = {'name': '张三','age':18, 'dept': 'sales'} print('name:',tinydict['name1']) ''' 输出 KeyError: 'name1' '''
添加字典元素
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
tinydict = {'name': '张三','age':18, 'dept': 'sales'} #添加 tinydict['address'] = '北京' print(tinydict) ''' 输出 {'name': '张三', 'age': 18, 'dept': 'sales', 'address': '北京'} '''
修改字典元素
tinydict = {'name': '张三','age':18, 'dept': 'sales'} #修改 tinydict['address'] = '上海' print(tinydict) ''' 输出 {'name': '张三', 'age': 18, 'dept': 'sales', 'address': '上海'} '''
删除字典元素-删除单一的元素
tinydict = {'name': '张三','age':18, 'dept': 'sales'} print(tinydict) #删除字典元素 del tinydict['dept'] print(tinydict) ''' 输出 {'name': '张三', 'age': 18, 'dept': 'sales'} {'name': '张三', 'age': 18} '''
删除字典元素-清空字典
tinydict = {'name': '张三','age':18, 'dept': 'sales'} print(tinydict) #清空字典 tinydict.clear() print(tinydict) ''' 输出 {'name': '张三', 'age': 18, 'dept': 'sales'} {} '''
删除字典元素-删除字典
tinydict = {'name': '张三','age':18, 'dept': 'sales'} print(tinydict) #删除字典 del tinydict print(tinydict) ''' 输出 NameError: name 'tinydict' is not defined {'name': '张三', 'age': 18, 'dept': 'sales'} '''
点击了解字典详情:
https://www.runoob.com/python3/python3-dictionary.html