Python基础 笔记(七) 容器--字符串、列表

简介: Python基础 笔记(七) 容器--字符串、列表

一、字符串

1、字符串的定义

mystr1 = 'hello1'
mystr2 = "hello2"
mystr3 = """hello3
            hello4"""
 
print(mystr1)
print(mystr2)
print(mystr3) #三引号可以保持字符串原来的结构

2、字符串的索引 及 负索引

mystr = 'hello'
 
print(mystr[0])
print(mystr[1])
print(mystr[2])
print(mystr[3])
print(mystr[4])
print(len(mystr)) #计算字符串的长度
 
print('-----------------------------')
for s in mystr:
    print(s)
 
print('-----------------------------')
for i in range(len(mystr)): # 0 1 2 3 4
    print(mystr[i])
字符串的负索引(-1,-2,-3)
#-1索引是倒数第一个
mystr = 'hello'
 
print(mystr[-1],end='')
print(mystr[-2],end='')
print(mystr[-3],end='')
print(mystr[-4],end='')
print(mystr[-5])

3、切片

"""
切片的语法:
    字符串[起始索引:结束索引:步长]  ---》包头不包尾
"""
name = "abcdefg"
 
print(name[1:5])    # 从1索引截取字符串到4索引(5索引不会包含)  步长默认为1 bcde
print(name[1:5:1])  # 从1索引截取字符串到4索引(5索引不会包含) 步长为1 bcde
print(name[1:5:2])  # 从1索引截取字符串到4索引(5索引不会包含) 步长为2 bd
print(name[:5])     # 从0索引截取字符串到4索引(5索引不会包含) 步长为1  abcde
print(name[1:])     # 从1索引截取字符串到最后 步长为1  abcde
print(name[:])      # 从0索引截取字符串到最后 步长为1  abcdefg
print(name[::2])    # 从0索引截取字符串到最后 步长为2  aceg
print(name[:-1])    # 从0索引截取字符串到倒数第二个(不包含倒数第一个) 步长为1  aceg
print(name[-4:-1])  # 从0索引截取字符串到倒数第二个(不包含倒数第一个) 步长为1  def
print(name[::-1])   # 将字符串进行翻转
 
file_name = 'test.png'
 
if '.jpg' == file_name[-4:]:
    print('你的文件是.jpg图片文件')
else:
    print('你的文件不是.jpg图片文件')

4、字符串中的函数应用

"""
函数:
    find :  返回子串在大串中第一次出现的索引,如果没有该子串,则返回-1
    index: 返回子串在大串中第一次出现的索引,如果没有该子串,则报错
"""
 
mystr1 = 'hello world and hello python'
 
print(mystr1.find('world2'))
print(mystr1.index('world2'))
2.
"""
函数: replace :  替换字符串,注意替换完成之后原来的字符串内容不会变化,而是返回一个新的字符串
"""
 
mystr1 = 'hello world and hello python hello'
 
mystr2 = mystr1.replace('hello','ok')  #替换
 
print(mystr1)
print(mystr2)
 
mystr3 = mystr1.replace('hello','ok',2)  #替换指定个数的字符串,如果没有指定,则全部替换
 
print(mystr3)
 
"""
函数:
    split :  切割字符串
"""
mystr1 = '2022-12-23'
 
list1 = mystr1.split('-') # ctrl + alt + v  ---> ['2022','12','23']
 
print(type(list1))
print(list1)
print(list1[0]) #2022
print(list1[1]) #12
print(list1[2]) #23
print('----------------------------')
 
list2 = mystr1.split('-',1)
print(list2)
 
 
print("--------------------------------------------")
 
mystr1 = '2022-12-23 10:37:46'
list1 = mystr1.split(' ')
list1_1 = list1[0].split('-')
print(list1_1[0])
print(list1_1[1])
print(list1_1[2])
 
list1_2 = list1[1].split(':')
print(list1_2[0])
print(list1_2[1])
print(list1_2[2])
"""字符串中函数(补充)"""
mystr = ' hello WORLD  JAVA python '
 
bl = mystr.startswith('hello')#判断字符串为某个字符串开头,如果是则返回True,否则返回False
print(bl)
 
bl = mystr.endswith('python')#判断字符串为某个字符串结尾,如果是则返回True,否则返回False
print(bl)
 
mystr2 = mystr.lower() #将字符串全部转为小写
print(mystr2)
 
mystr2 = mystr.upper() #将字符串全部转为大写
print(mystr2)
 
mystr2 = mystr.strip() #去除字符串两端的空格
print(mystr2)
 
mystr2 = mystr.lstrip() #去除字符串左侧的空格
print(mystr2+"xxx")
 
mystr2 = mystr.rstrip() #去除字符串右侧的空格
print(mystr2+"xxx")

5、字符串总结

字符串


下标


a = "123"


a[0] 获取字符串里的第一个元素


切片


a[起始位置:结束位置:步长]


1 找起始位置


2 找结束位置


3 看步长的正负


如果步长为正


从起始位置向右找结束位置


如果步长为负


从起始位置向左找结束位置


如果步长没写


默认是正1


步长长度不为1


按照步长的长度获取数据


4 取头不取尾的取值范围


字符串的常见操作


字符串的函数都不会改变原始的字符串, 返回一个新的字符串


字符串是不可以变的数据类型


b = a.replace(xxx,xxx) 并不会改变a字符串 而是产生一个新的字符串b


字符串.find(子串, 开始位置下标, 结束位置下标)


如果字符串中有子串, 返回子串的首字母在整个字符串中的下标位置


指定子串查找的范围, 取头不取尾


如果没有找到子串,返回-1


index方法(列表只有index方法没有find方法)


用法和find完全一样


区别: 如果找不到子串 直接报错


replace(老的子串,新的子串,替换次数)


进行子串的替换


如果不设置替换次数 默认就是替换无数次


split(子串)


会把切割好的元素 返回到一个列表中 列表会存储这些元素

字符串序列.split(分割字符, num)

注意:num表示的是分割字符出现的次数,即将来返回数据个数为num+1个

二、列表

1、列表的格式

"""
列表的格式:
 列表的名字 = [值1,值2,值3]
"""
 
#1、定义列表
list_name = ['李华','王刚','刘力','赵松']
 
#2、访问列表-1
print(list_name)
 
#2、访问列表-2
print(list_name[0])
print(list_name[1])
print(list_name[2])
print(list_name[3])
 
#2、访问列表-3
print('*'*30)
for a in list_name:
    print(a)
 
#2、访问列表-4
print('*'*30)
i = 0
while i < len(list_name):
    print(list_name[i])
    i += 1

2、关键字-in

"""
in 关键字:判断某个元素是否在列表中,如果在,则返回True,否则,返回False
         in的判断语句以后一般用在if语句中
         in的后边一般跟上容器(字符串、列表、元组、字典、集合)
not in 关键字:判断某个元素是否不在列表中,如果不在,则返回True,否则,返回False
"""
list1 = ['Tom', 'Jack', 'Rose', 'LinDa', 'Lili', 'Rose']
 
print('Jack' in list1)  # True
 
if 'Jack' in list1:
    print('该列表中包含Jack')
else:
    print('该列表中不包含Jack')
 
print('***********************not in ******************************')
 
print('Jack' not in list1)  # False
 
print('*********************字符串使用in关键字*******************************')
 
mystr1 = 'hello world'
print('w' in mystr1)  # True  'w' 在字符串mystr1中
print('hello' in mystr1)  # True  'hello' 在字符串mystr1中

3、列表-增

"""
列表的格式:
 列表的名字 = [值1,值2,值3]
  1、列表的值可以被改变
  2、append向集合添加元素都是添加到最后
"""
 
#1、定义列表
list_name = ['李华','王刚','刘力','赵松']
 
#2、通过append向列表中添加元素
list_name.append('孙权') #append向集合添加元素都是添加到最后
print(list_name)
 
#2、通过extend向列表中添加元素
list_name.extend(['刘备','关羽','张飞']) #extend可以将另一个列表的元素添加到该列表中
print(list_name)
 
#3、在执行索引位置添加元素
list_name.insert(1,'曹操')
print(list_name)
 
#4、修改元素
list_name[1] = '曹操'
print(list_name)

4、列表-删

"""
del :
      1、根据索引来删除,不能返回被删除的值
      2、如果删除的下标不存在,则报错
pop :
      1、根据索引来删除,可以返回被删除的值
      2、如果删除的下标不存在,则报错
remove函数:
      1、可以根据内容来删除
      2、如果删除的内存不存在,则报错
clear函数:
      1、清空集合所有数据
      del list1  删除列表本身,列表不存在
      list1.clear 清空列表数据,列表本身还在
"""
 
list1 = ['李刚', '王华', '赵亮', '牛山', '孙帅', '周数']
 
print(list1)
del list1[2]
print(list1)
 
print('-----------------------------------')
print(list1)
list1.pop(2)
print(list1)
 
print('-----------------------------------')
print(list1)
list1.remove('周数')  # 删除 列表中 ‘赵亮’ 元素
print(list1)
 
print('-----------------------------------')
print(list1)
list1.clear()
print(list1)

5、列表-改

"""
列表的格式:
 列表的名字 = [值1,值2,值3]
  1、列表的值可以被改变
"""
 
# 1、定义列表
list_name = ['李华', '王刚', '刘力', '赵松']
 
# 修改元素
list_name[1] = '曹操'
print(list_name)
2.

6、列表-查

"""
index函数:查找某个数据在列表中的第一次出现索引,如果没有找到则报错
count函数:表示查找指定数据在列表中出现的次数,如果没有则返回0
"""
list1 = ['Tom', 'Jack', 'Rose', 'LinDa', 'Lili', 'Rose',1]
 
print(list1.index('Rose'))  # 索引为:2
 
#  索引为:2   0表示查找的起始索引,3表示结束索引(不包含该索引的值)
print(list1.index('Rose', 0, 3))
 
#  count表示查找指定数据在列表中出现的次数
print(list1.count('Rose'))

7、列表-reverse

"""
reverse: 对列表的元素进行翻转
sort :对列表的元素进行排序
"""
list1 = ['李刚1','王华2','赵亮3','牛山4','孙帅5','周数6']
 
print(list1)
list1.reverse()
print(list1)

8、列表-sort

"""
sort :对列表的元进行排序
      如果排序的英文单词,则是按照这个单词在字典中出现的先后顺序排序
"""
list1 = ['student', 'about', 'blue', 'nice', 'person', 'zoo', 'abdon']
 
print(list1)
list1.sort()
print(list1)
 
print('------------------------------------------')
list2 = [78, 32, 59, 76, 15, 22]
 
print(list2)
# 升序排序
list2.sort()  # 将列表的数据从小到大排序,默认是升序
list2.sort(reverse=False)  # 同上
 
# 降序排序
list2.sort(reverse=True)  # 将列表的数据大到小排序
print(list2)
2.

9、嵌套

 
name_list = [
    ['小明','小红'],
    ['Tom','Lily','Rose'],
    ['张三','李四','王五']
]
 
print(len(name_list))
 
print(name_list[1][1])
 
 
print('--------------使用索引遍历---------------------')
for i in range(len(name_list)): #rang(4) ---> 0 1 2 3
    for j in range(len(name_list[i])):
        print(name_list[i][j])
 
print('----------------不使用索引遍历-------------------')
 
for list_i in name_list:
    for list_value in list_i:
        print(list_value)

10、列表总结

列表


下标查出界限也会报错


作用: 存储数据


可以存储多个数据


可以存储多种类型的数据


列表: 可变的数据类型(局部数据可以修改, 通过下标修改他的局部数据)



从末尾追加数据


append(数据)


按照指定位置添加数据


insert(下标,数据)


多个列表融合


extend()


删除


按照指定的数据的值删除列表中的元素


remove()


从末尾删除数据


pop()


彻底删除数据


del a



a[0] = 10


直接通过下标修改



index(元素, 起始位置, 结束位置)


返回元素 在列表中的下标的位置


如果找不到直接报错


count(元素)


统计列表中某个元素的出现次数


in/not in


判断一个元素是否存储于列表中


if xxx in a:


排序方法


列表.sort()


默认从小到大给列表排序(升序)


列表.sort(reverse=True)


从大到小给列表排序(降序)


列表.reverse()


列表[::-1] 效果一样


逆序


数字数据就按大小进行排序


字符串数据按ASCII码进行排序


目录
相关文章
|
4天前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
17天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
15 0
|
18天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
15 0
|
18天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
16 0
|
18天前
|
C语言 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第24天】在Python编程的世界中,追求代码的简洁性和可读性是永恒的主题。列表推导式(List Comprehensions)作为Python语言的一个特色功能,提供了一种优雅且高效的方法来创建和处理列表。本文将深入探讨列表推导式的使用场景、语法结构以及如何通过它简化日常编程任务。
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
22 2
|
15天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
11天前
|
关系型数据库 MySQL API
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?