目录
一、列表(list(线性表))
线性表(常见线性表数组 栈 队列 链表(单向链表和双向链表))是属于一种数据结构 python中列表是基于链表(双向链表)实现
1.1列表的定义:
(1)a=[1,2,3]的形式定义,其类似与c语言中的数组形式
(2)a=list()的形式,即a=list([1,2,3])
1.2.访问形式:
通过下标进行访问,通常下标从0开始,也可以是负数(其最后一位数是从下标-1开始标记)
>>> a=[1,2,5,6]
>>> a
[1, 2, 5, 6]
>>> a[2]
5
>>> a[-1]
6
1.3.遍历列表
通过循环进行遍历
# 遍历列表
for i in a:
print(i)
# 通过len计算列表长度即下标长度
i=0
while i<len(a):
print(a[i],end=" ")
i+=1
1.4 常见方法
[ 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
(1)append()----------向列表添加元素
>>> a=[1,2,3,4]
>>> a.append(8)
>>> a
[1, 2, 3, 4, 8]
(2)insert(index,object) ------- 向指定位置即下标(index)添加元素
>>> a=[1,2,3,4]
>>> a.insert(2,8)
>>> a
[1, 2, 8, 3, 4]
(3)sort()--------列表进行排序,从小到大,其他类型也可以排序(按照ASCII的值),但数据类型必须一致。
>>> a=[2,1,4,6,7]
>>> a.sort()
>>> a
[1, 2, 4, 6, 7]
(4)index() -------- 查找元素的位置,返回的是下标,如果元素有重复的情况下,返回的是元素第一次出现的位 置,如果元素不存在会报错。
>>> b=[1,4,6,8,9]
>>> b.index(6)
2
(5)reverse()--------倒序输出
>>> a=[1,2,3,4]
>>> a.reverse()
>>> a
[4, 3, 2, 1]
(6)remove()--------通过元素删除列表中的元素,如果元素不存在会抛出异常(报错)
>>> a=[1,2,6,8]
>>> a.remove(8)
>>> a
[1, 2, 6]
(7)count()-----统计元素在列表中出现的次数
>>> a=[1,2,2,2,4,5,5]
>>> a.count(2)
3
(8)clear()------清除元素(注意:慎用)
>>> a=[1,2,3,4]
>>> a.clear()
>>> a
[]
(9)copy()------拷贝列表
>>> a=[1,2,3,4]
>>> b=['A','B','C']
>>> b=a.copy()
>>> b
[1, 2, 3, 4]
(10)extend()------合并列表
>>> a=[1,2,3,4]
>>> b=['a','b','c']
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 'a', 'b', 'c']
(11)pop()-------从末尾删除元素,有返回值,返回值是删除掉的这个元素,要删除指定位置的元素pop(index)
>>> a=[1,2,3,4]
>>> a.pop()
4
>>> a.pop(1)
2
补充: 1. 通过下标可以修改某个元素的值 2. 列表中的元素类型可以不同 3. 列表中的元素也可以是列表,如:[1, 2, 3, [1, 2, 3], 4, 5]
二、集合(set)---- 哈希结构
2.1集合的基础概念
创建方法:(1)a={1,2,3}, (2)a=set({1,2,3})
集合特点:无序的,不能重复的(无序并不是指顺序 hash底层 )
2.2常见方法
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
其中clear、copy、remove与列表相似
add()--------添加元素,如果添加元素相同,则不会报错,不会被二次添加
>>> a={1,2,3,4,5}
>>> a.add(9)
>>> a
{1, 2, 3, 4, 5, 9}
difference()-------差集,看对象是谁即对谁取差集
>>> a={1,2,3,4,7,8}
>>> b={6,7,8,9}
>>> a.difference(b)
{1, 2, 3, 4}
>>> b.difference(a)
{9, 6}
intersection()------交集
>>> a={1,2,3,4}
>>> b={4,5,6}
>>> a.intersection(b)
{4}
union()------并集
>>> a={1,2,3}
>>> b={4,5,3}
>>> a.union(b)
{1, 2, 3, 4, 5}
update()------------更新集合,将并集后重新赋值给集合
>>> a={1,2,3}
>>> b={4,5,6}
>>> a.update(b)
>>> a
{1, 2, 3, 4, 5, 6}
discard()-------移除元素,如果元素不存在不做任何操作
>>> a={1,2,3,4}
>>> a.discard(3)
>>> a
{1, 2, 4}
三、元组(tuple)
3.1元组的基础概念
创建元组的方法: 1. t = (1,2,3,4) 2. t = tuple()
通过下标获取元素 t[0]
注意:
有序的、元组是一个不可变类型(元组的元素一旦确定下来是不可变的)-------- 能用元组的情况下尽 量不要用列表,因为元组相对于安全
3.2常见方法
['count', 'index']其与列表的方法相似(具体见列表)
补:元组是不可变的(下标),但元组中的元素是可变的(对其中的列表中的元素进行修改)
>>> b=(1,2,3,[1,2,3])
>>> b
(1, 2, 3, [1, 2, 3])
>>> b[3][1]=4
>>> b
(1, 2, 3, [1, 4, 3])
四、字典(dict)
4.1字典的基本概念
键值对(key-value)存储值(两列多行的二维表)
创建方法:1、a={"A":"beauty","B":"python"} 2、a=dict()
如何访问字典中的值:
通过key去访问value d["A"],如果没有这个value抛出异常 通过key修改value的值 通过key添加键值对(新key =新值 )
# 修改值
a["A"]=20
# 添加值
a["C"]="zuo"
print(a)
遍历字典:
>>> a={"A":"beauty","B":"py"}
>>> for i in a:
... print(i,a.get(i))
...
A beauty
B py
>>> for i in a.keys():
... print(i,a[i])
...
A beauty
B py
>>> for i,j in a.items():
... print(i,j)
...
A beauty
B py
4.2常见方法
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
clear,copy与列表相似
get()------获取(通过key获取value,没有key返回none)
>>> a={"a":"beauty","b":"py"}
>>> a.get("b")
'py'
keys()---- 返回所有的键(key)
>>> a={"A":"beauty","b":"py"}
>>> a.keys()
dict_keys(['A', 'b'])
values() ----- 返回所有的值value
>>> a={"age":20,"name":77}
>>> a.values()
dict_values([20, 77])
items() ----- 返回所有的键值对
>>> b={"age":18,"name":"zuo"}
>>> b.items()
dict_items([('age', 18), ('name', 'zuo')])
setdefault() ----- 设置默认值,当没有相应的键则返回None
>>> d
{'name': 'zhangsan', 'age': 20, 'gender': '男'}
>>> d.setdefault("name")
'zhangsan'
>>> d.setdefault("password")
>>> d
{'name': 'zhangsan', 'age': 20, 'gender': '男', 'password': None}
pop(key) ---- 通过key去移除键值对,如果没有这个key会抛出异常
>>> d
{'name': 'zhangsan', 'age': 20, 'gender': '男', 'password': None}
>>> d.pop("gender")
'男'
>>> d
{'name': 'zhangsan', 'age': 20, 'password': None}
popitem() ----- 移除键值对,根据后进先出的顺序进行删除