一、变量总结
1.1 变量定义
记录某种状态或者数值,并用某个名称代表这个数值或状态。
1.2 变量在内存中的表现形式
Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(又称为名字或者标签),对象的操作都是通过引用来完成的。例如,[]是一个空列表对象,变量 a 是该对象的一个引用
在 Python 中,「变量」更准确叫法是「名字」,赋值操作 = 就是把一个名字绑定到一个对象上。就像给对象添加一个标签。
a = 1
整数 1 赋值给变量 a 就相当于是在整数1上绑定了一个 a 标签。
a = 2
整数 2 赋值给变量 a,相当于把原来整数 1 身上的 a 标签撕掉,贴到整数 2 身上。
b = a
把变量 a 赋值给另外一个变量 b,相当于在对象 2 上贴了 a,b 两个标签,通过这两个变量都可以对对象 2 进行操作。
变量本身没有类型信息,类型信息存储在对象中,这和C/C++中的变量有非常大的出入(C中的变量是一段内存区域)
1.3 id()
id方法的返回值就是对象的内存地址。
python中会为每个出现的对象分配内存。
1.4 可变类型和不可变类型
可变类型:列表list、字典dict、集合set
不可变类型:数值类型(int和float)、字符串str、元组tuple
1.5 按访问顺序分类
a、顺序访问:字符串、列表、元组,可以索引,下标
b、映射访问:字典,使用链表
c、直接访问:数字
1.6 存放元素个数:
容器类型:列表、元组、字典,能够存放多个值。
原子类型:数字、字符串,只存放一个值。
二、集合
1、集合定义:由不同元素组成,元素全部都是无序的,元素都是不可变类型。
2、集合元素必须是是数字、字符串、元组。
3、由于集合必须是不同元素组成,定义时可以重复,但输出时自动去掉重复的元素。
例子
set1= {1,2,2,2,3,4,5,6,6}print(set1)
输出结果
{1,2,3,4,5,6}
4、集合是无序的
例子
set1= {"hello","world","nicholas","nick"}print(set1)
输出结果
{'hello', 'nicholas', 'world', 'nick'}
再次运行输出结果
{'nick', 'hello', 'nicholas', 'world'}
5、集合的元素必须是不可变类型
例子
set1= {"hello",[1,2]}print(set1)
输出结果
报错TypeError: unhashable type: 'list',无法对列表进行哈希化
但在创建集合的时候可以使用列表
例子
s = set(["nicholas","niubi",])print(s)
输出结果
{'nicholas', 'niubi'}
6、创建定义集合的方法
set1= {"hello",8}
set2= set("hello")print(set1)print(set2)
输出结果
{8, 'hello'}
{'o', 'h', 'e', 'l'}
分析:这里的第二个set将字符串每个字符循环了一遍,然后去掉了重复的l
例子
s = set(["hello","nicholas","hello"])print(s)
输出结果
{'hello', 'nicholas'}
分析:这里也是将列表循环了一次,去掉重复的元素。
三、集合的方法
1、add()
例子
s = {"hello","nicholas","hello",1,(8,"nihao")}
s.add("world")print(s)
输出结果
{1, 'world', 'nicholas', 'hello', (8, 'nihao')}
分析:这里自动去掉了重复的元素,添加的元素也必须是不可变类型,同时符合元素不能重复的条件。
2、clear()
例子
s = {"hello","nicholas","hello",1,(8,"nihao")}
s.clear()print(s)
输出结果
set()
分析:字典的清空结果是{},集合的清空结果是set()
3、copy()
例子
s = {"hello","nicholas","hello",1,(8,"nihao")}
s2=s.copy()print(s2)
输出结果
{(8, 'nihao'), 'nicholas', 'hello', 1}
4、pop()
例子
s = {"nicholas","hello",1,(8,"nihao")}
s.pop()print(s)
输出结果
第一次:
{'hello', 'nicholas', (8, 'nihao')}
第二次
{1, 'nicholas', 'hello'}
分析:由于集合是无序的,这里是随机的删除。
5、remove()
删除指定的元素
例子
s = {"nicholas","hello",1,(8,"nihao")}
s.remove("hello")print(s)
输出结果
{(8, 'nihao'), 1, 'nicholas'}
分析:这里用remove()的参数可以指定删除,如果指定的参数原集合没有则会报错。
6、discard()
指定删除集合中的元素。
s = {"nicholas","hello",1,(8,"nihao")}
s.discard("hello")print(s)
输出结果
{'nicholas', 1, (8, 'nihao')}
例子2
s = {"nicholas","hello",1,(8,"nihao")}
s.discard("nick")print(s)
输出结果
{1, 'nicholas', (8, 'nihao'), 'hello'}
分析:这里discard()里的参数在原集合里没有,但是这里不会报错,只是会输出原集合。
7、用set()将列表去掉重复的元素
利用集合元素不能重复的特点对列表中的元素进行去重。
例子
li1 = ["nicholas","pony","jack","nicholas"]
s1=set(li1)
new_li1=list(s1)print(new_li1 )
输出结果
['jack', 'nicholas', 'pony