程序在启动以后,是以进程方式存在。进程中数据(变量,函数,类,容器等)保存在内存中。
python中对象是什么?
由于python是弱类型语言,python中一切皆对象,对象包含:变量,函数,类,容器
对象存储在内存中的值。这就意味着在创建对象时会在内存中开辟一个内存空间。
基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
变量赋值
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如
# -*- coding: utf-8 -*- __author__ = 'zhougy' __date__ = '202018/6/12 下午11:55' counter = 1000 # 赋值整型变量 miles = 100.04 # 浮点型 name = "baidu" # 字符串 print(counter) print(miles) print(name)
多个变量赋值
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。(通过id判断)
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "sina"
以上实例,两个整型对象1和2的分配给变量 a 和 b,字符串对象 "sina" 分配给变量 c。
标准的数据类型
在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些标准类型,用于存储各种类型的数据。
对象按照类别分类:
(1)Python有基本数据类型:
Numbers(数字) — 基本数据类型, int,short, long, float
String(字符串)— 基本数据类型
bool (True or False)
None
(2)python有复合数据类型:
类(class)
函数
enum
(3)python的容器:
List(列表)
—— 双向链表 有序,可变, 操作: 插入(append,insert, extend 任何位置), 删除(remove, pop,任何位置), 查找(L[index], 任何位置), 遍历(列表,下标索引)
1 —》 2 —》 3 —》 4
《— 《— 《---
Tuple(元组)
—— 有序,不可变, 查找(T.index(value, start, end)), 遍历(列表,下标索引)
Dictionary(字典)
— — key-value键值对。
创建(1. mdict={'key':value}, 2.mdict=dict(key=value))
插入:mdict[key] = value 获取:key获取value数据(get, pop)
查找:mdict[key], mdict.get(key), 遍历(安装mdict.keys()遍历key,由mdict[key]获取value)
Set (集合)
— 存储一维无序对象
创建方式:set([1, 2, 3])
插入:add, 删除:remove, pop
判断元素是否在集合 in
作用:(1)去重 (2)运算:交集(intersection),并集(union)
Queue (队列)
— 存储先进先出的对象
创建方式:mq = queue.Queue(maxsize=0)
插入:put, put_nowait, 取数据:get, get_nowait
collections
Counter, defaultdict, deque, namedtuple, OrderedDict
python数字
数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:
var1 = 1var2 = 10
您也可以使用del语句删除一些对象的引用。
您可以通过使用del语句删除单个或多个对象的引用。例如:
del vardel var_a, var_b
Python支持四种不同的数字类型:
int(有符号整型) 分32bit和64bit, 所占用的内存字节数不同
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数) (复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。)
Python字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符。
一般记为 :
s="a1a2···an" (n>=0)
它是编程语言中表示文本的数据类型。
python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
比如:
s = 'ilovepython' print(s[1:5])
s[1:5]的结果是love。
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。
str = 'Hello World!' print(str) # 输出完整字符串 print(str[0]) # 输出字符串中的第一个字符 print(str[2:5]) # 输出字符串中第三个至第五个之间的字符串 print(str[2:]) # 输出从第三个字符开始的字符串 print(str * 2) # 输出字符串两次 print(str + "TEST") # 输出连接的字符串
以上实例输出结果:
Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"]
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
(1)访问列表中的值:
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
list = ['runoob', 786, 2.23, 'john', 70.2] tinylist = [123, 'john'] print(list) # 输出完整列表 print(list[0]) # 输出列表的第一个元素 print(list[1:3]) # 输出第二个至第三个元素 print(list[2:]) # 输出从第三个开始至列表末尾的所有元素 print(tinylist * 2) # 输出列表两次 print(list + tinylist) # 打印组合的列表
以上实例输出结果:
['runoob', 786, 2.23, 'john', 70.2] runoob [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
(2)更新列表
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
list = [] ## 空列表 list.append('Google') ## 使用 append() 添加元素 list.append('Runoob') print(list)
(3) 删除列表元素
可以使用 del 语句来删除列表的元素,如下实例:
list1 = ['physics', 'chemistry', 1997, 2000] print(list1) del list1[2] print("After deleting value at index 2 : ") print(list1)
python元组
元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
tuple = ('runoob', 786, 2.23, 'john', 70.2) tinytuple = (123, 'john') print(tuple) # 输出完整元组 print(tuple[0]) # 输出元组的第一个元素 print(tuple[1:3]) # 输出第二个至第三个的元素 print(tuple[2:]) # 输出从第三个开始至列表末尾的所有元素 print(tinytuple * 2) # 输出元组两次 print(tuple + tinytuple) # 打印组合的元组
以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的:
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] list[2] = 1000 # 列表中是合法应用 tuple[2] = 1000 # 元组中是非法应用 print(list)
Python字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john', 'code': 6734, 'dept': 'sales'} print(dict['one']) # 输出键为'one' 的值 print(dict[2]) # 输出键为 2 的值 print(tinydict) # 输出完整的字典 print(tinydict.keys()) # 输出所有键 print(tinydict.values()) # 输出所有值
字典内置函数&方法
Python字典包含了以下内置函数:
序号 | 函数及描述 |
---|---|
1 | cmp(dict1, dict2)比较两个字典元素。 |
2 | len(dict)计算字典元素个数,即键的总数。 |
3 | str(dict)输出字典可打印的字符串表示。 |
4 | type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。 |
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | dict.clear()删除字典内所有元素 |
2 | dict.copy()返回一个字典的浅复制 |
3 | [dict.fromkeys(seq, val])创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 |
4 | dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值 |
5 | dict.has_key(key)如果键在字典dict里返回true,否则返回false |
6 | dict.items()以列表返回可遍历的(键, 值) 元组数组 |
7 | dict.keys()以列表返回一个字典所有的键 |
8 | dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2)把字典dict2的键/值对更新到dict里 |
10 | dict.values()以列表返回字典中的所有值 |
11 | [pop(key,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem()随机返回并删除字典中的一对键和值。 |