学习笔记——Python:第二阶段(ToDo)

1. 数据结构

数据结构主要包括:数组(Array)、集合(Set)、列表(List)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和字典(Dictionary)等
Python中数据容器主要有:序列、集合和字典

注意:Python中没有数组结构

序列(sequence)

  • 序列特点:可迭代的、有序的、元素可以重复
  • 序列包括的结构有:列表(list)、字符串(str)、元祖(tuple)、范围(range)和字节序列(bytes)
  • 序列可进行的操作有:索引、分片、加和乘
    序列的分片(Slicing)就是从序列中且分出小的子序列,分片运算符有两种形式:
    [start:end]start是开始索引,end是结束索引
    [start:end:step]start是开始索引,end是结束索引,step是步长。步长可以为正整数,也可以为负整数。
    因此可用于倒置序列:a = a[::-1]
1.1. 元祖
  • 元组:一种不可变的序列,一旦创建不可以修改
    创建元素可以使用tuple([iterable])函数或者直接用逗号,将元素分割

  • 访问元组:索引访问元素、分片、拆包(Unpack)

    a = ('Hello','World',1,2,3)
    str1,str2,*n = a	# 拆包
    # str1 = 'Hello'
    # str2 = 'World'
    # n = [1,2,3]	# 列表
    
  • 遍历元组:遍历序列一般都是用for循环

    a = (5,4,3,2,1)
    for idx, item in enumerate(a):
    	print("{0} - {1}".format(idx,item ))
    
1.2. 列表(list)

也是一种序列,与元组的区别是:元素无法修改,而列表可修改,包括追加、删除、替换和插入

  • 列表创建
    list([iterable])函数,或者用中括号[]将元素包裹,元素之间用逗号,分隔

  • 追加元素
    append()方法:追加单个元素
    +运算符或extend()方法:追加另外一个列表

  • 插入元素
    list.insert(i, x)i指要插入的索引,x是要插入的元素

  • 替换元素

  • 删除元素
    remove(x)方法,x是要删除的元素,如果没有x元素,会抛出异常
    pop()方法,pop(i)删除i索引值,pop()删除最后面的元素,有 返回值:删除的元素

  • 其他常用方法
    reverse():倒置列表
    copy():复制列表
    clear():清除列表中的所有元素
    index(x[,i[,j]]):返回查找x第一次出现的索引,i是开始查找索引,j是结束查找索引
    count(x):返回x出现的次数

  • 列表推导式

    n_list = [x ** 2 for x in range(10) if x % 2 == 0]
    print(n_list)
    
    # 相当于
    n_list = []
    for x in range(10):
    	if x % 2 == 0:
    		n_list.append(x ** 2)
    print(n_list)
    
    # 多个条件时
    n_list = [x for x in range(100) if x % 2 == 0 if x % 5 == 0]
    n_list = [x for x in range(100) if x % 2 == 0 and x % 5 == 0]
    
1.3. 集合
  • 集合的特点:集合中的元素是无序的、不能重复的。包含可变集合和不可变集合

  • 创建可变集合
    set([iterable])函数,或者用大括号{}

  • 修改可变集合
    add(elem):添加元素,如果元素已经存在则不能添加,且不会抛出错误
    remove(elem):删除元素,如果元素不存在,则抛出错误
    discard(elem):删除元素,如果元素不存在,不会抛出错误
    pop(elem):删除返回集合中的任意一个元素,返回值是删除的元素
    clear():清除集合

  • 遍历集合for in

  • 不可变集合
    frozenset([iterable])函数,不能使用大括号{}

    student_set = frozenset(['张三','李四','王五','王五'])
    
  • 集合推导式

    n_set = {
         x ** 2 for x in range(10) if x % 2 == 0}
    print(n_set)
    
1.4. 字典

dict是可以迭代的、可变对象

  • 创建字典
    dict()函数,或者用大括号{}将“键:值”对包裹,“键:值”对之间用逗号分隔

    dict1 = {
         102: '张三', 105: '李四', 109: '王五'}
    print(dict1)
    
    dict2 = dict(S102='张三', S105='李四', S109='王五')
    print(dict2)
    
    print(dict1[102])
    print(dict2['S102'])
    

    注意:特殊形式创建dict(key1=value1,key2=value2,key3=value3...)key必须是字符串,而且字符串要省略单引号或双引号

  • 修改字典
    ①添加
    ②替换
    ③删除:del语句、pop(key[,default])方法和popitem()方法

    dict1 = {
         102: '张三', 105: '李四', 109: '王五'}
    del dict1[109]
    dict1.pop(105)
    dict1.popitem()	# 随机删除
    
  • 访问字典
    get(key[,default]):通过键返回值,如果键不存在返回默认值
    items():返回字典的所有键值对
    keys():返回字典键视图
    values():返回字典值视图

  • 遍历字典

    dict1 = {
         102: '张三', 105: '李四', 109: '王五'}
    for k in dict1.keys():
    	print(k)
    
    for v in dict1.values():
    	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值