当前位置: 首页 > news >正文

python---序列 (str,list,tuple)

一、 序列类型入门

python的数据类型:int	float bool str
运算符
	+ - * / %  > <  and or not
流程控制
	if
    else
    
    while
    for
掌握python的2大容器类型
    数值类型(3个):int float bool
    序列类型容器(3个):
        str : 可以存储 数字、字母、特殊符号、等一切文本数据的容器
        list (列表)
        tuple (元组)

    散列类型容器(2个)  set(集合)、dict(字典)
    
    函数基础

6.1 序列简介

数据结构:编程语言中会将,以某种方式组合起来的数据元素集合称为数据结构

  • 序列类型:存放多个值在连续的内存空间中,并且这些值按照一定顺序排列,每个值都有所在位置的编号 (下标) 访问它们

  • 序列类型:可以存放多个数据的一种数据类型,他有序

6.2 列表和元组

6.2.1 列表 list

列表 list:有序的集合,可以装任何数据类型的容器

  • 创建列表

      1. 直接写 [ ] 括起来,里面的元素使用 逗号 隔开
      
      # 创建一个变量,数据是列表,长度为7
      name_arr = ['小明', '小李', '年龄', '水果',10,6.666,True]
      print(name_arr)
      print(type(name_arr)) #查看数据类型是list型
       # 注意,请勿在字符串中写上, 这个长度为1
      name_arr = ['香蕉,橘子,榴莲']
      print(name_arr)
      print(type(name_arr))
      
      1. range() 函数 : 根据给定的参数,生成有规律的整数序列
      range(start,stop,step=1)
      	- start 开始
          - stop 停止
          - step 步长,可以不填,默认1
      包头不包尾/前闭后开[ )
      🌰:       
      range(1,101)   #输出1-100,取不到101
      
      print(list(range(1, 1001))) # 生成1~1000的列表
      
      
      range(start,stop,step)
      	- start 开始
          - stop 停止
          - step 步长
        
      # 需要1~100中间的偶数
      print(list(range(2, 101,2)))
      
      # 需要10~1倒序来      
      arr = list(range(10, 0, -1)) # 步长也可以为负数
      print(arr)
      
      
      

6.2.2 元组 tuple

元组和列表基本一样,也是用来存储多个数据的,可以装任何数据类型的容器。

  • 最大的区别:列表是可以修改的

    • 元组一但创建以后,则无法再变更
    • 元组:不能改的列表
  • 创建方式

    1. 直接使用 ( ) 英文括号 圈起来,数据之间用英文逗号隔开

      # 正常情况  元组是() 列表是[ ]
      number = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, True, False, '哈哈哈')
      print(number, type(number))
      # 也可以直接  数据1,数据2,
      number = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, True, False, '彬彬'
      print(number, type(number))
      
       # 一个元素的特殊情况  当元组只有一个元素的时候,需要 (1,) 表示
      number = (1,)  # (1) 括号被优先理解为 优先级
      print(number, type(number))
      
      

    2 . 也能通过 range + 类型转换创建

    t = tuple(range(1,101))
    
    print(t)
    print(type(t))
    

6.3 序列类型基本操作

序列:list、tuple、str 全部通用

6.3.1 下标

下标是序列中每个元素的编号
在这里插入图片描述

“Python是世界上最好的语言”

序列类型中比如字符串,每个字符串都会存在一个下标(索引),从左往右开始的。

  • 注意,下标默认是从0开始

下标的作用:可以帮助访问序列中的某个元素

语法格式

***序列[下标]*** 
  • s = "Python是世界上最好的语言"
    
    print(s[0]) # P 下标从0开始
    print(s[5]) # n
    
    # 创建一个变量,数据是列表,长度为4
    name_arr = ['彬彬', '翠果', '冰糖', '清越']
    print(name_arr,type(name_arr))
    name = name_arr[0]
    print(name,type(name))
    
    # 访问的时候,不能超出下标最大范围  0~3
    # print(name_arr[4])
    print(name_arr[3])
    
    
    
  • 可以反着取下标:右往左 -1 -2 -3

url = "https://www.baidu.com/s?wd=hello&rsv_spt=1"
print(url[41])  # 正向下标
print(url[-1])  # -1 表示倒数第一个

6.3.2 切片

单独提取一个,可以直接使用 序列[下标]

L = ['彬彬', '翠果', '清越', '晶晶', '不凡']

L2 = [L[1], L[2], L[3]]  # 笨方法
print(L2)

# 切片也能干这种事情
"""
    单独访问: 序列[下标]
    切片访问:  序列[下标1:下标2] 可以切分序列,切出来类型不变
        下标1:表示开始的下标
        下标2:表示结尾的下标
        包头不包尾/前闭后开
"""

# 切片:截取多个元素
# 语法:序列[开始下标:结束下标+1]
# 注意:结束下标同range一样,不包尾部
L = ['彬彬', '翠果', '清越', '冰糖', '不凡']

# 也是不包括 尾部  语法和range非常像
print(L[1:3])  # 从下标1处取到下标2处
print(L[1:4])  # 从下标1处取到下标3处
print(L[1:5])  # 从下标1处取到下标4处
print(L[1:2])  # 从下标1处取到下标1处



s = "hello world"
print(s[0:5])  # 开始下标0 结束下标4  由于取不到尾 所以4+1
# 简写:如果是从头开始切的
print(s[:5])  # 头部可以省略

# 提取:world
print(s[6:])  # 如果是切到尾部,也可以省略不写

# 小练习:以下是什么效果?
print(s[:]) # 从头切到尾


# 切片和range语法很像
# 扩展语法:序列[开始下标:结束下标+1:步长单位=1]  (了解) 
s = "hello world"
# print(s[::2]) # 从头到尾 2步隔着切
# print(s[::5])

# ★步长常用的时候:利用-1步长来反转序列
print(s[::-1]) # 当步长为负数的时候,头部就是右边,尾部就是左边

6.3.3 成员运算符

返回的也是布尔值

元素 in 容器

运算符描述实例
in如果在指定的容器中找到值返回 True,否则返回 False。x 在 y 容器中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的容器中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

in : 属于 , 可以判断某个元素是否属于 序列

not in : 不属于


# 列表判断元素是否存在
arr = ["张三",'李四','王五']
while True:
    name = input("请输入用户名:")
    print(name in arr) # 原来判断是否存在一个元素
    
    
    
    
s = "hello python3.8.10"
# 字符串单个判断存在不存在
print("p" in s) # True
print(" " in s) # True

# 整体判断,要当作一个整体去找
print("hello" in s) # True 能找到hello这个整体
print("hellopython" in s) # False
print("hello python" in s) # True
print("3.8.10" in s) # True
print("3.10.8" in s) # False

# 空字符串: ""
print("" in s) # 空字符串属于一切字符串子集



6.3.4 序列也能运算

序列类型相加 都是合并

  • 字符串相加:‘a’ + ‘b’ = ‘ab’
  • 列表相加 : [1,2,3] + [4,5,6] = [1,2,3,4,5,6]
字符串 是可以通过  相加 和 乘法 运算

arr = [1,2,3]
arr2 = [3,4,5]
arr + arr2 = [1,2,3,3,4,5]

# 乘法只能乘整数,本质也是反复和自己拼接
arr2 * 3 => [3,4,5,3,4,5,3,4,5]

6.4 序列常用内置函数

实现和序列相关的操作

函数:print( ) type( ) input( ) id( )

  • python中的函数,不要等价数学函数
  • 函数等于是一个功能,可以直接使用的封装好的工具
  • 学习一个函数就学2个东西
    1. 作用是什么
    2. 参数怎么填
    3. 他返回什么东西没?

内置函数

  • python官方提供的功能
函数功能
len()计算序列的长度,即返回序列中包含多少个元素。
max()找出序列中的最大元素。注意,对序列使用 sum() 函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+ 运算符可以连接两个序列),还是做加和操作。
min()找出序列中的最小元素。
sum()计算元素和。
sorted()对元素进行排序

6.4.1 len( )

len( ) : 计算序列的长度,即返回序列中包含多少个元素。

序列的长度就是指序列的元素数量

# len()
#   作用:求出序列的长度
#   参数(括号里面的东西):序列
#   返回:长度 int
print(len(name_list))
print(len(list1))
s = "hello world"
print(len(s))

s = "hello"
print(len(s)) # 字符串的长度

lis = [1, 2, 3, '哈哈']

s = "hello"
# 最大下标 = 长度 - 1  # 为什么要减1,因为下标是从0开始的
index = len(s) - 1
print(s[index])

6.4.2 ASCII编码(了解)

ASCII 本质就是一个一个数,计算机采用了这个编码方式

计算机真正存储:01010101111111111

计算机没有办法去真正有意义的存 ‘a’ 进去
通过规则

‘a’ -> 97 -> 0110 0001

字符->ASCII编码->二进制

在这里插入图片描述

# python支持使用 ord()函数 将一个字符作为参数,返回对应的ascii值
#               chr()函数 将一个整数作为参数,返回对应的字符

s = 'a'
print(ord(s)) # a:97   A:65
print(chr(97))

6.4.3 max( )与min( )

max( ) : 返回给定参数的最大值,参数可以是序列

作用:求最大值和最小值
参数:序列
返回:最值


lis = [9, -5, 5, 2, 7, 100, 1, 30]

# 最大值 max
print(max(lis))
# 最小值 min
print(min(lis))

# 字符串也是可以比较大小的。
# ascii编码,本质上也是在比数字
s = ['~','b','c','z','@']
print(max(s)) 

6.4.4 sum( )

sum(序列) : 对序列进行求和计算

作用:对序列进行求和计算
参数:序列
返回:和 int


s = [1,2,3,4,5,6]
print(sum(s))


# 求1+2+3+...+100 的和,不用for

a = list(range(1,101)) # 创建一个 1~100的a列表
print(sum(a)) # 对a列表进行求和

6.4.5 sorted( )

sorted: 可以对序列类型进行排序操作,支持升序(默认)和降序,并返回一个新的序列

lis1 = [10, 5, 11, 6, 8, 0]

作用:对序列进行排序
参数:序列
返回:返回的一定是列表

"""
    print 输出 
        额外功能参数
        sep 分隔符功能
        end 结尾换行

    sorted 排序
        默认是升序的
        reverse = True   # 降序
        reverse = False  # 升序  默认的
"""
list1 = [1, 9, 2, 8, 3, 7, 4, 6, 5]

print(sorted(list1, reverse=True))
# 注意括号区分 不要写到print里面去了,reverse是sorted函数功能参数
# 错误案例
# print(sorted(list1),reverse=True)


list1 = [1, 9, 2, 8, 3, 7, 4, 6, 5]
# 方法二,也可以先排好有序,然后直接 [::-1] 反转
print(sorted(list1)[::-1])
案例:水仙花数
求所有三位数的水仙花数
"""
    如何提取三位数的 各个部位

"""
# 方法一:转字符串来提取下标
# for i in range(100, 1000):
#     #     # i 就是表示三位数
#     str_i = str(i)  # 整数 转 字符串(序列)
#     x = int(str_i[0])
#     y = int(str_i[1])
#     z = int(str_i[2])
#     if x ** 3 + y ** 3 + z ** 3 == i:
#         print(i, "水仙花数")

# # 方法二:数字计算取出来
# for i in range(100, 1000):
#     x = i // 100
#     y = i % 100 // 10
#     z = i % 10
#     if x ** 3 + y ** 3 + z ** 3 == i:
#         print(i, "水仙花数")

# 方法三:循环嵌套
# for x in range(1, 10):
#     for y in range(0, 10):
#         for z in range(0, 10):
#             i = x * 100 + y * 10 + z  # 还原成3位数
#             if x ** 3 + y ** 3 + z ** 3 == i:
#                 print(i)

相关文章:

  • RBAC 模型的简单实现
  • Mamba组件:状态空间模型简介
  • 使用 PerformanceObserver 实现网页性能优化的最佳实践
  • java字符串案例 //要求:将输入的字符串中的数字转换为罗马数字,长度小于9(运用方法:查表法)
  • 目标检测中衡量模型速度和精度的指标:FPS和mAP
  • 2023 年全国职业院校技能大赛(中职组)移动应用与开发赛项 赛题第十套
  • 说说 CDN 的工作原理,它在前端性能优化中起到什么作用?
  • 零基础上手Python数据分析 (4):Python数据结构精讲 - 列表、元组、字典、集合
  • NVM环境下安装pnpm报错的解决方案
  • 项目开发 1-确定选题,制作原型
  • uniapp+vue实现购物车的左滑删除功能
  • BSides-Vancouver-2018 ftp匿名访问、hydra爆破22端口、nc瑞士军刀、提权
  • uniapp-x js 限制
  • 3.14-信号
  • Python Matplotlib面试题精选及参考答案
  • 删除有序数组中的重复项(26)
  • springboot树形结构 支持模糊查询,返回匹配节点和父节点,其他节点不返回
  • Python 基础语法详解
  • 掌握这些 UI 交互设计原则,提升产品易用性
  • Linux内核中断管理总
  • 乘联分会:上半年车市价格竞争温和,下半年价格战或再开启
  • 10名“鬼火少年”凌晨结队在城区飙车,警方:涉非法改装,正处理
  • 龙湖集团:今年前4个月销售220.8亿元,4月新增两块土地储备
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式