字符串

字符串:由0个或多个字符组成的有序字符序列

字符串由一对单引号或一对双引号表示

字符串是字符的有序序列,可以对其中的字符进行索引

"hello"---->h e l l o

索引 0 1 2 3 4

基本操作

字符串的序号

1.正向递增序号

2.反向递减序号

使用[ ]是用来获取字符串中一个或多个字符

索引:返回字符串中单个字符 <字符串>[M]

切片:返回字符串中一段字符子串 <字符串>[M: N]

取值范围:左开右闭 正向递增 反向递减

``"""

正向递增 0 1 2 3 4 5 6

反向递减 -7 -6 -5 -4 -3 -2 -1

云 想 衣 裳 花 想 容

"""正向递增   0  1  2  3  4  5  6反向递减  -7 -6 -5 -4 -3 -2 -1云 想 衣 裳 花  想 容
"""
Str = "云想衣裳花想容"
print(Str[2:4])
print(Str[-5:-3])
print(Str[-5:4])

需求分析

转义字符

1.转义符形成一些组合,表达一些不可打印的含义

\n 换行(光标移动到下行首)

\t 横向跳格(跳到下一制表位置)

\v 竖向跳格

\b 退格

\r 回车(光标移动到本行首)

\f 走纸换页

\ 反斜杠字符’\’

\’ 单引号字符

2.可以去掉特殊含义

让这个双引号去掉本身含义,就打印双引号

print("我想\"嫁给\"秦霄贤")

常用函数

1.# len() 获取字符串的长度

a = len("去某个国家追个星")
print(a)

2.# str() 把任意数据类型转换成string

b = 30
print(type(b))
c = str(b)
print(type(c))

3.#Type()输出数据类型的

4.#hex() 十进制转换成十六进制(0x)

print(hex(99))

5.#oct() 十进制转换成八进制(0o)

print(oct(99))

6.#chr() 十进制转换成字符

print(chr(68))

7.#ord() 字符转换成十进制

print(ord('A'))

方法本身也是函数,但与<a>有关,<a>.<b>()风格使用

方法和函数的区别:

1.方法是特殊的函数,可以说是函数的子集

2.方法平常往往是和类有关的,是我们在面向对象语言中会提到,用到的。

3.函数是一一映射的关系,给定一个变量,则会出现一个确定的值。 是指一段可以直接被其名称调用的代码块,它可以传入一些参数进行处理并返回一些数据,所有传入函数的数据都是被明确定。

  1. 函数--->函数名字() 方法 类/模块.方法名字()

  2. 方法是一个特殊的函数

 str.lower()  把字符串转换成小写  返回字符串
a = "AASDFGH"
print(a.lower())
#str.upper()  把字符串转换成大写  返回字符串
b = "luck"
print(b.upper())#str.split(按照什么拆分)  拆分 返回的是list列表[]
c = "I,love,you"
print(c.split(","))#str.count(子串)  某一个子串在str(字符串)中出现的次数  返回值整数类型
d = "o"
#o在I,love,you中出现了多少次  2
print(c.count(d))
print(type(c.count(d)))
#str.replace(old,new)  str中的任意一个子串替换成新的子串  返回字符串
Str01 = "I,LOVE,YOU"
Str02 = Str01.replace("YOU", "李雪琴")
print(Str02)#str.center(宽度,新的字符)  Str字符串根据某一个宽度进行居中 返回值字符串
"""
宽度 = 新的字符+str
新的字符必须是一个字符
"""
Str03 = "刘华强"
Str04 = Str03.center(10)
print(Str04)
Str05 = Str03.center(10,"牛")
print(Str05)#str.strip(字符) 去掉左右两边的字符 返回字符串
Str06 = "==I,LIVE,YOU=="
Str07 = Str06.strip("=L")
print(Str07)

格式化

1.使用百分号进行格式化输出的方式,用法如下:

%s,表示字符串;

%d,表示整数;

%f,表示浮点数

%代表一个占位符

name = "张三"
age = 18
print("%s is %d year old"%(name,age))

要求:

1.字符串和int不能拼接

2.对数据有未知性

bug: 占位符必须和参数一一对应,否则,语句不通顺,报错

2.    <模板字符串>.format(<逗号分隔的参数>)

1. 利用{}为占位符

2.  利用索引(索引是0)

bug:比如100以上条数据,数数比较麻烦

print("{2}的爱徒是{0},儿徒是{1}".format("栾云平","烧饼","郭德纲"))
print("{1}的主角是{2},由{0}出演".format("孙红雷","扫黑风暴","李成阳"))

3.  利用变量的赋值

"{c}告诉我们:{b}不要和三观不合的人结婚,{a}我们不要和妈宝结婚".format(a="乔三丽",b="乔一成",c="乔家儿女")

大括号{}内部对格式化的配置方式

{ <参数序号> : <格式控制标记>}

注意:

参数序号:默认是0

填充字符:默认空格

若是整数,需要在前面补齐空格,若在字符串之后,也要补齐空格

对齐方式:默认是左对齐

列表 (List)

含义:列表是一种序列类型,创建后可以随意被修改

注意:列表是序列类型的一种扩展,十分常用

list创建

1.使用方括号 [] 或list() 创建,元素间用逗号 , 分隔

2.列表中各元素类型可以不同,无长度限制

list01 = [1,2,3,4]
list02 = list() #[]
list03 = list(["张三","李四"])
print(list01)
print(list02)print(list03)
list04 = [12.3,10,3.14e2,"张三"]
print(list04) #[12.3, 10, 314.0, '张三']

常用函数有:1.list() 2.len() 3.sum() 4 .max() 5.min()

1.#创建list

list01 = [1,2,5,7,-2,-9]

2.#len(列表) 统计列表中元素的个数

a = len(list01)
print(a) #6

3.#sum(列表) 求和

b = sum(list01)
print(b) #4

4.#max(列表) 最大值

c= max(list01)
print(c) #7

5.#min(列表) 最小值

d = min(list01)
print(d) #9

四大功能:增删改查

1. 增

#创建

#list.insert(index,值)  根据下标进行插入数据

list01=.insert(1,"杨幂")
print(list01)#['张艺兴','陈立农','迪丽热巴','杨幂']

#list.append(值) 在末尾插入

list01.append("杨紫")
print(list01)#['张艺兴','陈立农','迪丽热巴','杨幂','杨紫']

2. 删

#创建

list01 = ["张艺兴","陈立农,"迪丽热巴","杨幂","杨紫"]

#list.pop(index) 删除指定位置的数据

list01.pop(3)
print(list01)  #["张艺兴","陈立农,"迪丽热巴","杨幂","杨紫","张艺兴"]

#list.remove(值) 删除值,但是他删除的是值第一次出现的位置

list01.remove("张艺兴")
print(list01) #["张艺兴","陈立农,"迪丽热巴","杨幂","杨紫"]

#list.clear() 删除所有数据

list01.clear()
print(list01) #[]

3.改

List[i] = 值(要修改的值

#重新进行赋值

list01=[3]="陈立农"
print(list01)##["张艺兴","迪丽热巴","杨幂","杨紫"]

4.查

#创建list

list01 = [1,2,5,7,-2,-9]

#查询所有 ---直接打印列表名字

print(list01)

注意:

查询单个值

利用[index]进行查询 index-->从0开始

print(list01[1])  #2

查询多个值

[start:stop]   左开右闭

小数在前面

正向递增  反向递减   一负一正

print(list01[1:4])  #[2, 5, 7]
print(list01[-5:-2]) #[2, 5, 7]
print(list01[-5:4]) #[2, 5, 7]

常用方法

元组(tuple)

含义:元组是一种序列类型,一旦创建就不能被修改  不能增删改

元组是序列类型的一种扩展

元组是python语言核心的一部分,python的元组对象不可变,不能动态添加或删除元素,元组具有很强的灵活性。

创建

tuple01 = (1,2,3)
tuple02 = tuple() #空元组  ()
tuple03 = tuple((5,6,7))
print(tuple01)
print(tuple02)
print(tuple03)

1.使用小括号 () 或 tuple() 创建,元素间用逗号 , 分隔

元组的意义:

#创建

tuple02 = tuple() #空元组  ()
list01 = list() #[]
  • 空列表  空元组  空集合 空字典都是False    all()

● print(all([[],()])) #False

#创建

tuple02 = (1,2,3,4,5,6)

查询所有值  直接打印元组名字

查询单个值  [index]

查询多个值  [start:stop] 左开右闭 一负一正

print(tuple02)
print(tuple02[2])
print(tuple02[1:4])
print(tuple02[-5:-2])
print(tuple02[-5:4])

运算符

#创建

Str = ("张三")
print(type(Str)) #<class 'str'>

#字符串只能存放一个值  元组可以存放多个值,加个逗号可以进行区分

tuple01 = ("张三",)
print(type(tuple01)) #<class 'tuple'>

#复制完以后把数据变成元组

print(tuple01*3)  #('张三', '张三', '张三')

字典(dict)

在python中,字典是核心数据结构,它可以存储任意数量的对象,每个对象都有唯一 的字典键标识。字典常被称为:映射,散列表,查找表或关联数组

1.映射是一种键(索引)和值(数据)的对应

"""

映射

key  value

张三  18

李四  20

王五  80

"""

"""

[1,2,3,4]

索引 0 1 2 3

"""

创建

1.键值对:键是数据索引的扩展

2.字典是键值对的集合,键值对之间无序(没有索引)

3.采用大括号{}和dict()创建,键值对用冒号: 表示

4.字典类型是“映射”的体现

5.字典变量> = {<键1>:<值1>, … , <键n>:<值n>

#创建

dict01 = {"张三":18,"李四":20,"王五":80}
dict02 = dict()
dict03 = dict({"张三":90,"李四":20})
print(dict01)  #{'张三': 18, '李四': 20, '王': 80}
print(dict02) #{}
print(dict03)  #{'张三': 90, '李四': 20}

dict01[新的key] = 新的值  添加数据

dict01["小乔"] = "天魔缭乱"
print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船', '元哥': '无敌时间移位', '小乔': '天魔缭乱'}

 dict.pop(key)  根据key删除一对数据

 dict.clear()  清除所有数据

dict01.pop("元哥")
print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船'}

  只能修改值,不可以修改key

  为什么:因为key是唯一的,不能重复的,避免出现重复的情况所以不能修改

  怎么修改: 

      先根据key拿到值  dict01["孙策"]

      再重新赋值

dict01["孙策"] = "乘风破浪"
print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '乘风破浪', '元哥': '无敌时间移位'}

#创建

dict01 = {"鲁班":"空中支援","花木兰":"切换形态","孙策":"开船","元哥":"无敌时间移位"}

# dict.keys()  查看所有的key(英雄)

print(dict01.keys()) #dict_keys(['鲁班', '花木兰', '孙策', '元哥'])

# dict.values()  查询所有的value(大招)

print(dict01.values()) #dict_values(['空中支援', '切换形态', '开船', '无敌时间移位'])

 查询单个值

  1.dict[key]  利用key查询value

  2.dict.get(key,默认值)  利用key查询value 如果key没有,那么就输出默认值

print(dict01["花木兰"]) #切换形态
print(dict01.get("花木兰"))  #切换形态
print(dict01.get("貂蝉","没有此英雄,请购买")) #没有此英雄,请购买

 查询所有值(包括key和value)

  1.直接打印字典名

  2.dict.items() 迭代方法

print(dict01) #{'鲁班': '空中支援', '花木兰': '切换形态', '孙策': '开船', '元哥': '无敌时间移位'}
print(dict01.items()) #dict_items([('鲁班', '空中支援'), ('花木兰', '切换形态'), ('孙策', '开船'), ('元哥', '无敌时间移位')])

常用的函数和方法

 k in dict    key在不在字典里面

 如果在输出True  如果不在输出False

 为什么 20 in dict0

   原因是他只能判断key在不在,不能判断value在不在

print("张三" in dict01) #True
print(20 in dict01) #False

dict01.update(dict02)  把02中的数据更新到01中

 更新是更新多个数据

 是复制吗? no

 但是你可以理解成添加数据

#创建字典

dict01 = {"张三":20,"王五":30,"赵六":70,"李四":80}
dict02 = {"翠花":20,"光头强":10}
dict01.update(dict02)
print(dict01) #{'张三': 20, '王五': 30, '赵六': 70, '李四': 80, '翠花': 20, '光头强': 10}
print(dict02) #{'翠花': 20, '光头强': 10}

#创建字典

dict01 = {"张三":20,"王五":30,"赵六":70,"李四":80}
dict02 = {"翠花":20,"光头强":10}

  del 字典名[key]  删除指定位置的数据

  和pop一样 

  dict.pop(key) 删除指定位置的数据

del dict01["李四"]
print(dict01) #{'张三': 20, '王五': 30, '赵六': 70}

集合(set)

含义:集合是一种无序的序列,集合中的元素具有唯一性,即集合中不存在两个同样的元素

在集合中放入的元素只能是不可变类型的,如:数字,字符串,元组,等。浮点数存在精度的问题,一般不适合做集合中的元素

集合是多个元素的无序(没有下标)组合

集合类型与数学中的集合概念一致

集合元素之间无序,每个元素唯一,不存在相同元素

集合元素不可更改,不能是可变数据类型

创建

1.集合用大括号 {} 表示,元素间用逗号分隔

2.建立集合类型用 {} 或 set()

3.建立空集合类型,必须使用set()

#创建

● set01 = {1,2,3,4,5}
● set02 = set() #set()
● set03 = set({9,10,11})
● print(set01)
● print(set02)
● print(set03)

空列表 []

空元组 ()

空字典 {}

空集合 set()

原因是字典的创建也是{},两者冲突了

所以我们的空集合是set(),创建空集合的时候必须使

print(type({})) #<class 'dict'>
print(type(set())) #<class 'set'>

#创建

set01 = {"喜羊羊","美羊羊","懒洋洋","沸羊羊","暖羊羊","慢羊羊","灰太狼"}

注意: set.discard(值)  删除集合中的值

如果数据不存在,不报错

set01.discard("美羊羊")
print(set01) #{'慢羊羊', '喜羊羊', '灰太狼', '暖羊羊', '懒洋洋', '沸羊羊'}
set01.discard("小灰灰")
print(set01)

注意:set.remove(值) 删除集合中的值

KeyError: '小灰灰'

如果没有这个值,会报错

set01.remove("慢羊羊")
print(set01) #{'懒洋洋', '灰太狼', '沸羊羊', '喜羊羊', '暖羊羊'}
#set01.remove("小灰灰")
#print(set01)

set.pop() 随机删除

set01.pop()   #{'懒洋洋', '沸羊羊', '喜羊羊', '暖羊羊'}#{'灰太狼', '喜羊羊', '沸羊羊', '暖羊羊'}
print(set01)

不可以更改数据

直接打印集合名字去查询

不能使用索引进行查询,因为我们集合是无序的


print(set01)
print(set02)
print(set03)

集合常用函数和方法

#创建

set01 = {"喜羊羊","美羊羊","懒洋洋","沸羊羊","暖羊羊","慢羊羊","灰太狼"}

#set.copy() 复制/拷贝一个一模一样的集合

set02 = set01.copy()
print(set02) #{'慢羊羊', '美羊羊', '灰太狼', '喜羊羊', '沸羊羊', '暖羊羊', '懒洋洋'}

#len(set) 返回集合的元素个数,集合的长度

a = len(set01)
print(a) #7

x in set 元素x在不在集合当中

x not in set 元素不在集合中

print("慢羊羊" in set01) #True
print("慢羊羊" not in set01) #False

#set(x) 把其他数据类型(x)转换成集合类型

Str = "hello"
print(Str) #hello
print(type(Str))b = set(Str)
print(type(b)) #<class 'set'>
print(b) #{'o', 'e', 'h', 'l'}

重点

1.他的符号是  |

2.返回两个集合的所有值

print(set01 | set02) #{1,2,3,4,5,7,9}

1.差的符号是  -

 2.set01 - set02  set01去掉公共部分的值

print(set01 - set02) #{1, 4}
print(set02 - set01) #{9, 7}

1.交的符号  &

 2.两个的公共部分

print(set01 & set02)  #{2, 3, 5}

补集

1.补集的符号 ^

2.并集-交集 = 补集

3.除去公共部分,set01和set02的单独部分我都要

包含关系

判断set01 和 set02是不是包含关系

>  <   >=  <=

口朝向那边,那边是大的

set01 >= set02   set01包含set02

print(set01 >= set02) #True
print(set01 < set02) #Falseprint(set02 < set01) #True

增强符

 S  |= t --- s=s | t 

语法:  set01 |= set02  并等   set01 = set01 | set02

s = set01 | set02
print(s) #{1, 2, 3, 4, 5, 7, 8, 9}set01 |= set02
print(set01) #{1, 2, 3, 4, 5, 7, 8, 9}

查看两个变量是否来自同一个地址

基本数据类型

1. 基本类型的赋值机制

2.容器类型的赋值机制

基本数据类型会为每一个对象单独赋值,即使值是一样,也是不同的内存

>>> x = 500

>>> id(x)

1862181199440

>>> y = 500

>>> id(y)

1862181199472

除了对象等于另一个对象

a =1
b = a

问题:为什么vs内存一样,idle内存却不一样?

因为在vs是一起创建的,在idle中是先创建一个,在创建另外一个

序列类型

第三章 python基础相关推荐

  1. 第三章 Python基础——文件操作函数

    3.1三元运算 三元运算又称三目运算,是对简单条件的简写 if 条件成立:val=1 else:val=2 改成三元运算: val=1 if条件成立 else 2 3.2字符编码转换 编码的种类情况: ...

  2. 第三章 Python基础知识

    list1 = ['张三','男',33,'江苏','硕士','已婚',['身高178','体重72']] # 取出第一个元素 print(list1[0]) # 取出第四个元素 print(list ...

  3. 第三章 Python函数基础及进阶

    第三章 函数基础及进阶 3.1 上章补充内容 3.1.1 Bytes类型 计算机的数据需要存到硬盘上,但是硬盘只能存储二进制的数据. 我们知道将计算机里的数据转换成我们能看懂的数据是将二进制 -> ...

  4. python是动态类型语言、变量不需要显示声明类型_【IT专家】第3章 Python基础

    第 3 章 Python 基础 2017/12/13 0 3-1 .标识符.为什么 python 中不需要变量名和变量类型声明? python 语言是动态的.强类型语言,一言以蔽之! 动态编译语言特点 ...

  5. python中 1.34e3_Python快速编程入门——第2章 Python基础语法

    第2章 python基础语法 一.基本语法 二.变量和数据类型 三.标识符和关键字 四.简单数值类型 一.基本语法 注释:Python的注释是用# 不像C/C++使用的是//或者/*/.多行注释好像挺 ...

  6. 廖雪峰python教程——第一章 Python基础

    第一章 Python基础 一.数据类型和变量 Python的数据类型包括整数.浮点数.字符串.布尔值.空值.变量.常量等.其中整数可以表示任意大小的整数:空值是Python里一个特殊的值,用None表 ...

  7. 【python第一章 基础捋顺,第二章 python基础语法】

    第一章 基础捋顺,第二章 python基础语法 第一章 基础捋顺 第二章 python基础语法 2.1输入输出 2.2代码注释 2.3代码缩进 2.4命名规范 2.5变量 2.6基本数据类型 2.7数 ...

  8. 【面试宝典】软件测试工程师2021烫手精华版(第三章Mysql基础篇)

    第三章 Mysql 基础 一. 基础知识 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 什么是关系型数据库,主键,外键,索引分别是什么? 关系型数据库是由多张能 ...

  9. 第一章 Python基础 ——一起搬砖打地基

    目录 前言 第一章 Python基础 1.表达式 2.整型.浮点型和字符串数据类型 3.字符串的连接和复制 字符串的连接--"+"操作符 字符串的复制--" * &quo ...

最新文章

  1. VC中的Attach和Detach
  2. 练手CF3-C - Wormhouse
  3. php编程对联,形容程序员的对联大全
  4. git(9)--- 如何使用MTK GIT发布分支
  5. python的变量与注释
  6. Eclipse — 快速生成提示代码和快速导包
  7. git push失败的解决办法(2)
  8. MFC之学习绘制矩形、画刷使用
  9. python可以做微信小游戏吗_python可以写微信小游戏吗
  10. 【02】制作第一个zblog模板第二期,熟悉模板所有的开发运行和调试机制·提前做好所有纯html页面
  11. 被面试官问到项目中的难点?是时候对自己的项目进行总结了(记一次项目问题总结)
  12. android测试篇(三)单元测试之UI测试 Espresso学习与实践
  13. 基于树的机器学习模型的演化
  14. xmanager登陆linux黑屏,使用xmanager工具登陆linux服务器时黑屏问题
  15. 中国联通智能路侧单元白皮书
  16. 8421码5421码2421码余3码
  17. Azure语音合成再添新声音,“风格迁移”技术为不同音色实现多情感演绎
  18. 微信扫描下载提示以及js判断用户手机系统
  19. viewFlipper的基本实现
  20. 我的职场十年:谈谈普通员工的各种低级错误

热门文章

  1. 计算机系统基础:bomb炸弹实验
  2. 五彩斑斓的黑,找到了
  3. BDD100K数据集简单解析以及格式转换成voc格式
  4. 获取手机通讯录加好友
  5. Parsing error: No Babel config file detected for xxx Either disable config file checking...报错解决方法
  6. JAVA计算机毕业设计学生学籍信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  7. 电视机android正在升级卡住,智能电视升级失败,原因都在这里!
  8. VescoFx - Provoker压缩VST插件
  9. PMP考试-PMBOK指南第6版(中文)
  10. 关于validate_data_dir的一些理解