python 的与众不同 --序列篇

2023-10-20 20:38
文章标签 python 序列 与众不同

本文主要是介绍python 的与众不同 --序列篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序列(sequence)

  • 序列是Python中最基本的一种数据结构
    • 数据结构指计算机中数据存储的方式
    • 序列的分类:
      可变序列:
      列表(List)
      不可变序列:
      字符串(str)
      元组(tuple)
常用函数
  • 使用 in 检查某元素是否在列表中
  • 使用 not in 检查某元素是否不在列表中
  • 使用 len() 获取列表中元素个数
  • 使用 min() 获取列表中最小值
  • 使用 max() 获取列表中最大值
  • s.index(x) 获取元素在列表中的索引,没有抛异常
  • s.count(x) 获取元素在列表中出现的次数
  • s.pop() 删除并返回
  • s.remove(x) 删除指定元素
  • s.clear() 清空

列表(list)

  • 通过[]来创建列表
  • 列表中对象会按照插入顺序存储
  • 列表中对象是 Object类型
  • 索引是列表中元素位置,从0开始,可以使用索引取出数据
  • 如果索引是负数,表示是从后往前取,从-1开始
  • 取出数据 :list[0]
  • 列表长度:len(list)
截取 切片
  • 语法:列表[起始:结束]
    • 前开后闭规则,
      如:list[1:4]是从索引第一个开始截取到第4个,但不包含第4个,一共截取3个元素
  • 语法:列表[起始:结束:步长]
    • 步长是截取列表时查找规则,默认为1。
      mlist = [1,2,3,4,5,6,7,8,9,10]
      print(mlist[0:5:2])
      # 打印:[1, 3, 5] 
      # 原因是步长为2,两个两个读取
      
    • 步长不可以为0,但可以为负数,负数就是倒着取
      print(mlist[::-1])  反转
      打印:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
      
拼接
  • 使用 + 可以将两个列表拼接成一个列表
  • 使用 * 可以将列表重复指定次数
修改
  • list[索引] = Value
  • 切片修改 mlist[0:2] = [11,12,13,14]

    如果有步长,则要求替换列表元素个数统一

删除
  • del list[索引]
  • list.clear() 清空
  • list.pop(索引) 删除指定元素 并 返回删除元素
  • list.remove(元素) 删除第一个值得元素
增加
  • 列表 + [元素] 添加到最后
  • list.append(元素) 添加到最后
  • list.insert(索引,元素) 指定位置插入元素
  • list.extend(list) 添加多个元素
反转
  • list[::-1] 使用切片方法完成反转
  • list.reverse() 使用函数完成反转
排序
  • list.sort() 默认升序排列
    list.sort(reverse=True) 降序排列
    list.sort(key=len) 字符串长度排序
    list.sort(key=str) 同意转换为字符串排序
  • list.sorted() 对任意类型排序
    排序后返回新的列表
遍历
  • while循环遍历
    i = 0
    while i < len(array) :print(array[i])i += 1
    
  • for 循环遍历
    • 语法:for 变量 in 序列: 代码块
      只要是序列就可以只用for进行遍历
      如使用for可以遍历字符串
    for v in 'asdfg' :print(v)
    
    • 遍历列表
    for v in array : print(v)
    

range() 函数得使用

  • range()函数可以用来生成一个自然数序列,有单个参数
    第一个参数 – 起始位置,默认是0
    第二个参数 – 结束位置
    第三个参数 – 步长,默认是1
  • 通过range()可以创建一个执行指定次数的for循环
    for i in range(10) :print(i)
    

元组(tuple)

  • 通过()来创建列表,创建元组时可以省略()
  • 不可变的序列
  • 操作上基本和列表一致
  • 元组不为空时,至少有一个逗号
    my_tuple = (1,2,3,4,5,6)
    my_tuple = 1,2,3,4,5,6
    my_tuple = 1,
    
  • 元组解包(结构)
    my_tuple = 10,20,30,40
    a,b,c,d = my_tuple
    
  • 交换a,b值可以利用元组的解包来完成
    a,b = b,a
    print(a,b,c,d)
    print(my_tuple)
    
  • 元组解包时,变量数量必须和元组元素的数量一致
    也可以在变量前边添加一个*,这样变量将会获取元组中所有剩余元素
    a,b,*c = my_tuple
    print(a,b,c) #c是一个数组
    
  • 解包 所有序列都可以使用解包

可变对象

  • 可变对象就是可以修改对象值
    # 无论如何修改对象,对象id始终没有改变(内存地址没有改变)
    a = [11,12,13,14]
    print(f'原始数据a   :{a} id={id(a)}')a[0] = 20
    print(f'修改后数据a :{a} id={id(a)}')b = a
    print(f'赋给变量b   :{b} id={id(b)}')b[1] = 21
    print(f'b修改后打印a:{a} id={id(a)}')
    print(f'b修改后打印b:{b} id={id(b)}')a[2] = 22
    print(f'a修改后打印a:{a} id={id(a)}')
    print(f'a修改后打印b:{b} id={id(b)}')
    

字典(dict)

  • 通过{}来创建字典,也可以使用dict创建
  • 键值对(key = value)结构
  • 键(key)不可重复,如果重复就会被覆盖掉前面的
  • 字典属于一种新的数据结构,称为映射(mapping)
  • 字典和列表相似,都是用来存储对象的容器
  • 列表存储数据性能好,但查询性能差
  • 字典中每一个元素都有一个唯一的名字,通过名字可以快速的查找到指定元素
  • 查询元素时,字典的效率非常高
    my_dict = {'name':'张三','age':'15'}
    my_dict = dict(name = 'zhangsan',age = '23')# 也可以将双值序列转为字典array = [['name','王五'],['age',35]]
    my_dict = dict(array)
    print(my_dict)# 修改字典
    print(my_dict['name'])
    

遍历字典

  • 通过keys()获取所有键
    my_dict = {'name':'张三','age':'15'}
    keys = my_dict.keys()for k in keys :print(k,my_dict[k])
    
  • 通过values()获取所有值
    values = my_dict.values()
    for v in values:print(v)
    
  • 通过items()获取键值对序列
    items = my_dict.items()
    #因为值键值对,所以用两个变量接收
    for k,v in items:print(k,v)
    

集合(set)

  • 使用{}创建集合,也可以使用set()
  • 不可变对象
  • 存储对象不是按照插入顺序存储的(无序的)
  • 不可重复
  • 集合中只能存贮不可变对象
  • 可将列表、元组、字典(转换后只存在键)直接转为集合
    s = set(x)
    # 添加元素
    s.add(x)
    # 添加一个集合
    s.update(列表、元组、字典、集合)
    # 删除
    s.pop # 随机删除一个元素 有返回值
    s.remove(x) # 删除指定元素
    

集合运算

  • 集合运算时不会影响原来的集合,会返回一个新的集合
  • & 交集
    s1 = {1,2,3,4,5,6}
    s2 = {4,5,6,7,8,9}
    print(s1 & s2) # 返回{4, 5, 6}
    
  • | 并集
    s1 = {1,2,3,4,5,6}
    s2 = {4,5,6,7,8,9}
    print(s1 | s2) # 返回{1, 2, 3, 4, 5, 6, 7, 8, 9}
    
  • -差集
    s1 = {1,2,3,4,5,6}
    s2 = {4,5,6,7,8,9}
    print(s1 - s2) # 返回{1, 2, 3}
    
  • ^ 异或集
    s1 = {1,2,3,4,5,6}
    s2 = {4,5,6,7,8,9}
    print(s1 ^ s2) # 返回{1, 2, 3, 7, 8, 9}
    
  • '<= 检查是否为子集
  • '>= 检查是否为超集
  • '< 检查是否为真子集
  • '> 检查是否为真超集
    为保证符号正常显示添加了’符号,使用请注意

这篇关于python 的与众不同 --序列篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249570

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr