【Python基础】字典和列表

列表的索引和切片

一、列表索引

  • 列表中元素是有序排布的,使用下角标数字取值,例如a[2]
  • 列表的第一个元素下角标是0,后面下角标依次往后增加。
  • 最后一个元素的下角标,可以是 n-1,也可以是 -1。

二、列表切片:一次性取多个元素

  • 切片语法:a[start:end:step]
  • 关键词:
    • start:起始位置,默认0
    • end:结束位置,默认长度+1
    • step:每次计算的步长,默认1

三、使用场景

  • 索引使用于任何场景
  • 切片可以深度拷贝
  • 算法学习、刷题

总结

1、索引使用:0起始,-1结尾,计算下标并取值

2、索引问题:索引太大会导致越界错误,这个错误很容易出现

3、思想扩展:索引适合大部分数据集合,能索引一般都能切片

字典和json

一、json介绍

  • 也称js对象简谱
  • 是一种轻量级的数据交换格式
  • 完全独立于编程语言的文本格式
  • 用来存储和表示内容数据

二、字典和json的转换

  • 官方库:import json
    •  json = json.dumps(dict)
    •  dict  = json.loads(json)
  • 第三方库:demjson
    •  json = demjson.encode(json)
    • data = demjson.decode(json)

三、数据转化的说明

特殊情况:

  •         True/Flase 和 true/flase
  •         None 和 null
  •         json不支持单引号

总结

1、字典问题:通常字典转json是没有问题的,但是注意细节

2、json问题:json类似字典结构,但不完全一致,很多细节不同

3、转换问题:json转字典可能会出错,需要先检查json,再转换

列表生成式

一、基础语法:[i*2 for i in range(5)]

  • 构造解析:
    • 最外层是列表的中括号
    • i*2是列表的单个元素
    • 循环结构体:for i in range(5)

二、列表生成式的优劣势

  • 优势:
    • 速度快
    •  语法简洁
    • 代码更少
    • 可操作性强
  • 劣势:
    • 没有

列表生成式的扩展语法:

[i if i%3 else 'Three' for i in range( 1,13)]

["{}{}".format(m,n) for m in [1,2,3]  for n in ['a','b']]

结果:

1、使用场景:适合列表的快速定义,和赋值操作

2、使用建议:推荐长期使用列表生成式,代码运行快,更简洁明了

3、代码长度:列表生成式的代码优雅,但是单行过长导致理解慢

 字典生成式

一、键值对取值

  • 基础操作:
    • dict  >键
    • dict.keys()  >键
    • dict.values()   >值
    • dict.items()   >(键,值)

二、字典生成式语法

  • 基础语法:{k:v for i in range(1,4)}
  • 语法解析:
    • 外层括号是大括号
    • k:v代表键值对,k为键,v为值
    • 循环结构体:for i in range(1,4)

三、列表生成式的优劣势

  • 优势:
    • 速度快
    •  语法简洁
    • 代码更少
    • 可操作性强
  • 劣势:
    • 没有

字典生成式的扩展语法:

{"{}:{}".format(k,k*k) for k in range(5)}

总结:

1、使用场景:适合字典的快速定义,和赋值操作

2、使用建议:推荐长期使用字典生成式,代码运行快,更简洁明了

3、代码长度:字典生成式的代码优雅,但是单行过长导致理解慢

随机数和随机取值

随机库:random

开发者:官方

导入语句:import random

一、随机数值

  • 随机范围整数:random.randint()
  • 随机小数:random.random()
  • 随机范围小数:random.uniform()

二、随机取值类型

  • 数字
  • 字符串
  • 数据对象

三、随机取值方式

  • 随机1个
  • 随机可重复n个
  • 随机不重复n个
random.randint(1,100) ## 取1~100的其中一个整数
random.random()  ## 只取小数
random.uniform(1,100)  ## 随机范围小数
random.choice(10)  ## 取10次,可重复
random.choices(a,k=2)  ##从a列表中单次取2个,可重复 
random.sample(b,k=4)  ##从a列表中单次取4个,不重复,乱序
[round(random.random(),3) for i in range(10)]  ##取10个小数,且小数点保留3位

总结

1、随机整数:左闭右闭的方位区间,随机出值

2、随机小数:可选范围和纯小数,推荐round函数规定小数位数

3、随机方式:可重复和不可重复是两种方式,注意区分并选择函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值