•python中的内置类型◾str
◾list
◾tuple
◾set
◾dict
•list 列表
•一组由有序数据组成的序列◾数据有先后数据
◾数据可以不是一类数据

•list 的创建◾直接创建,用中括号创建,内容使用因为逗号 , 隔开
◾使用list创建
◾列表包含单个字符串的时候是一个特例

#直接赋值创建列表
l1 = [1,2,3,4,5]
#list内的数据可以不是一个类型
l2 = [1,2,3,"gepengcheng","杨雨"]
print (l1)
print (l2)

[1, 2, 3, 4, 5]
[1, 2, 3, ‘gepengcheng’, ‘杨雨’]

#创建列表的第二种方式
l3 = list ()
print (l3)
#现实创建l3是什么类型函数
print (type (l3))

[]
<class ‘list’>

内置函数
•help ;帮助函数
•type : 现实变量的类型
•id :现实变量id
•print : 打印

# list 创建的特例
s = "gepengcheng"
#想创建一个只含s只包含一个字符串的列表
l1 = list(s)
print (type (l1))
print (l1)

<class ‘list’>
[‘g’, ‘e’, ‘p’, ‘e’, ‘n’, ‘g’, ‘c’, ‘h’, ‘e’, ‘n’, ‘g’]

列表的常见操作
•访问◾使用下标操作,也叫索引
◾列表的元素索引从0开始

•切片操作◾对列表进行任意一段的截取需要注意取值范围,左包括右不包括
◾截取之后创建一个新得列表

l1 = [12,13,11,22,345,33]
#使用下标访问
print(l1[0])
print (l1[3])
#IndexError访问超标
print (l1[15])

12
22


IndexError Traceback (most recent call last)
in
4 print (l1[3])
5 #IndexError访问超标
----> 6 print (l1[15])

IndexError: list index out of range

#切片操作需要注意取值范围,元素索引从0开始左包括右不包括
l1 = [100,200,300,400,500,600,700,800,900]
print (l1[3:6])
#切片操作下标可以为空
print (l1[:6])
print (l1[3:])
print (l1[:])print("__________________________________")#分隔符
#下面结果说明切片后生成一个全新的列表
#通过内置函数id可以判断出切片是否生成了一个全新的列表
#id 的作用是用来判断两个变量是否是一个变量
l2 = l1[0:10]
print (id(l1))
print (id(l2))

[400, 500, 600]
[100, 200, 300, 400, 500, 600]
[400, 500, 600, 700, 800, 900]
[100, 200, 300, 400, 500, 600, 700, 800, 900]


2546774356808
2546755019528

#切片可以控制增长的幅度,默认增长幅度为1
l1 = [100,200,300,400,500,600,700,800,900,1000]
print (l1[::1])#等于print (l1[:])
print (l1[::2])print("__________________________________")#分隔符#下标可以超出范围,超出后不在考虑多余的下标内容
print (l1[:100])
print (l1[100:])

[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
[100, 300, 500, 700, 900]


[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
[]

#下标从左往右数从0开始如 0,1,2,3,....
#下标从右往左数从-1开始如 -1,-2,-3,-4....
l1 = [100,200,300,400,500,600,700,800,900,1000]
#下面例子为空,因为默认是从左向右移动
print (l1[-2:-5])
#如果我想从右往左开始 打印900,800,700则:
print (l1[-2:-5:-1])#如果我想从右往左开始 打印700,800,900则;
print (l1[-4:-1:1])

[]
[900, 800, 700]
[700, 800, 900]

tuple (元组)
•可以理解成一个不允许更改的列表

tuple (元组)
•可以理解成一个不允许更改的列表

#tuple 创建
# 1,直接用小括号创建
a = ()
print (type(a))
#用小括号创建一个元素的tuple的时候
b = (100)
print (type(b))
c = (100,)
print (type(c))
d = (1,2,3,4)
print (d)
print (type(d))print ("___________________________________________")#分隔符
# 2,直接用逗号
a1 = 100,
print (type(a1))
b1 = (1,2,3,4)
print (type(b1))print ("___________________________________________")#分隔符
a2 = tuple ()
print (a2)
b1 = [1,2,3,"gepengcheng"]#要求tuple参数必须可迭代
c1 = tuple (b1)
print (c1)

<class ‘tuple’>
<class ‘int’>
<class ‘tuple’>
(1, 2, 3, 4)
<class ‘tuple’>


<class ‘tuple’>
<class ‘tuple’>


()
(1, 2, 3, ‘gepengcheng’)

tuple 其余特征和list基本一致
•有序
•可以访问不可以更改
•元素可以是任意类型

# tuple索引操作
a3 = ["i","love","una"]
print (a3)
b3 = tuple (a3)
print (b3[2])

[‘i’, ‘love’, ‘una’]
una

# tuple 分片操作
print (b3[:])
print (b3[:2])
print (b3[-1::-1])

(‘i’, ‘love’, ‘una’)
(‘i’, ‘love’)
(‘una’, ‘love’, ‘i’)

# 元组的相加
ta = 100,200,300
tb = ("i","love","una")
tc = ta + tb
print (tc)

(100, 200, 300, ‘i’, ‘love’, ‘una’)

#tuple 乘法
aa = a3 * 2
print (aa)

[‘i’, ‘love’, ‘una’, ‘i’, ‘love’, ‘una’]

# tuple 成员检测
print (a3)
if "una" in a3:print ("检测到una")
if "yangyu" not in a3:print ("未检测到yangyu")
if "una" not in a3:print ("未检测到una")

[‘i’, ‘love’, ‘una’]
检测到una
未检测到yangyu

# 元组遍历(把一段字符拆开)
love = ["i","love","una"]
for i in love:print (i)

i
love
una

# 元组嵌套
a4 = ((100,200,300),("i","love","una"),(520,13,14))
#双层循环
for A in a4:print (A)for B in A:print (B)

(100, 200, 300)
100
200
300
(‘i’, ‘love’, ‘una’)
i
love
una
(520, 13, 14)
520
13
14

#使用单层循环
b4 = ((100,200,300),("i","love","una"),(520,13,14))
for i,l,u in b4:print (i,l,u)print ("____________________________________")#分隔符
# 上面访问中有一个规定,既i,l,u要跟元组个数进行对应
for i,l,u,y in b4:print (i,l,u,y)

100 200 300
i love una
520 13 14



ValueError Traceback (most recent call last)
in
6 print ("____________________________________")#分隔符
7 # 上面访问中有一个规定,既i,l,u要跟元组个数进行对应
----> 8 for i,l,u,y in b4:
9 print (i,l,u,y)
10

ValueError: not enough values to unpack (expected 4, got 3)

#常用元组函数
# len : 长度
c4 = ((100,200,300),("i","love","una"),(520,13,14))
print(len(c4))print ("____________________________________")#分隔符# max/min : 最大值/最小值
d4 = (12,342,31312,212)
print (max(d4))
print (min(d4))print ("____________________________________")#分隔符# count : 对某一元素进行计数
f4 = (1,2,3,4,5,1,1,1,1,1)
print (f4.count(1))print ("____________________________________")#分隔符# index : 某一元素所在位置
e4 = (1,2,3,4,5,1,1,1,1,1)
print(e4.index(5))

3


31312
12


6


4

# tuple的特殊用法
a = 520
b = "yang yu"
print (a,b)print ("____________________________________")#分隔符#要求对a,b值进行互换
a,b = b,a
print (a,b)

520 yang yu


yang yu 520

集合
•跟数学中集合得概念一致
•内容无序+内容不重复

# 集合的定义
# 1,通过set关键字
aa = set ()
print (aa)

set()

#集合定义最多只能定义1个参数
bb = set (1,2,3,4,5,6)
print (bb)

TypeError Traceback (most recent call last)
in
1 #集合定义最多只能定义1个参数
----> 2 bb = set (1)
3 print (bb)

TypeError: ‘int’ object is not iterable

b = [1,2,3,4,5,6,7]
bbb = set (b)
print (bbb)

{1, 2, 3, 4, 5, 6, 7}

# 2 ,使用大括号定义
sc = {1,2,3,4,5,6,7,8,11,22,33}
print (sc)

{1, 2, 3, 4, 5, 6, 7, 8, 33, 11, 22}

# in 操作
if 2 in sc:print ("2在sc里面")
if 9 in sc:print ("9在sc里面")
print ("____________________________________")#分隔符
#集合里面的顺序是无序的
for i in sc:print (i)

2在sc里面


1
2
3
4
5
6
7
8
33
11
22

# 集合的另一种遍历
sb = {(1,2,3),(4,5,6),("i","love","una")}
for a,b,c in sb:print (a,b,c)

i love una
4 5 6
1 2 3

# 集合的生成式
sa = {1,2,3,4,5,6,7,8,9}
# 利用sa 生成一个sb
sb = {a for a in sa}
print (sb)
print ("____________________________________")#分隔符
sc = {a for a in sa if a %2 == 0}
print (sc)
print ("____________________________________")#分隔符
sd = {a for a in sa if a %2 == 1}
print (sd)print ("____________________________________")#分隔符#双重for循环
#把 sa 中的每一个元素的平方生成一个新的集合
# 1,用1个for
sb = {i ** 2 for i in sa}
print (sb)
print ("____________________________________")#分隔符
# 2,用2个for循环
se = {m*n for m in sa for n in sa}
print (se)

{1, 2, 3, 4, 5, 6, 7, 8, 9}


{8, 2, 4, 6}


{1, 3, 5, 7, 9}


{64, 1, 4, 36, 9, 16, 49, 81, 25}


{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 54, 56, 63, 64, 72, 81}

# 集合的内置函数
# len: 长度
print (len (se))
# max/min : 最大值/最小值
#add : 向集合中添加元素sa = {1,2,3,4,5,6,5,4,3,2,1}
print (sa)
# 向sa中添加数字7 结果打印出来None
print (sa.add(7))
#添加了值并不会在add添加选项中打印出来 如下列
print (sa)
print (sa.add(8))
print (sa)

36
{1, 2, 3, 4, 5, 6}
None
{1, 2, 3, 4, 5, 6, 7}
None
{1, 2, 3, 4, 5, 6, 7, 8}

# clear : 清空
#删除操作
# remove 与 discard的区别#remove案例
sa1 = {1,2,3,4,5,6,7,8,9}
print (sa1)
sa1.remove(5)
print (sa1)
print ("____________________________________")#分隔符
#如果remove删除的值并不在集合中就会报错
sa1.remove(5)
print (sa1)

{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 6, 7, 8, 9}



KeyError Traceback (most recent call last)
in
8 print ("____________________________________")#分隔符
9 #如果remove删除的值并不在集合中就会报错
—> 10 sa1.remove(5)
11 print (sa1)

KeyError: 5

# discard案例
sa1 = {1,2,3,4,5,6,7,8,9}
print (sa1)
sa1.discard(5)
print (sa1)
print ("____________________________________")#分隔符
#如果discard删除的值就不会报错
sa1.discard(5)
print (sa1)

{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 6, 7, 8, 9}


{1, 2, 3, 4, 6, 7, 8, 9}

# pop删除集合的一个内容
#删除的内容是随机的
sa1 = {1,2,3,4,5,6,7,8,9}
print (sa1)
sa1.pop()
print (sa1)
sa1.pop()
print (sa1)

{1, 2, 3, 4, 5, 6, 7, 8, 9}
{2, 3, 4, 5, 6, 7, 8, 9}
{3, 4, 5, 6, 7, 8, 9}

# 集合的数学操作
# intersection : 交集
sa = {1,2,3,4,5,6}
sb = {4,5,6,7,8,9,}
#sa 和 sb 的交集
print(sa.intersection(sb))
# difference : 差集
print (sa.difference (sb))
#差集的另外一表示
print (sa - sb)# union : 并集
print (sa.union(sb))
#并集 不能使用+表示
print (sa + sb)

{4, 5, 6}
{1, 2, 3}
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7, 8, 9}


TypeError Traceback (most recent call last)
in
13 print (sa.union(sb))
14 #并集 不能使用+表示
—> 15 print (sa + sb)

TypeError: unsupported operand type(s) for +: ‘set’ and ‘set’

frozenset 冰冻集合¶
•不允许修改的集合

# 案例
print(sa)
sb = frozenset (sa)
print (sb)

{1, 2, 3, 4, 5, 6}
frozenset({1, 2, 3, 4, 5, 6})

递归函数¶
•递归 : 函数间接或者直接调用自己
•递归分两个过程◾往下调用,分解过程
◾往上回溯,综合过程

•递归需要注意◾一定要有结束条件

•是以资源换取编写速度的算法比较吃硬件

def a (n):print ("i love una ")def b (n):a(100)print ("una love gpc")
b(100)

i love una
una love gpc

# func_a表示己算阶乘
#利用数学公式
def fun_a(n):print (n)#递归一定要有结束条件if n == 1:return 1return n * fun_a(n-1)
rst = fun_a(5)
print ("f(5) =  ",rst)

5
4
3
2
1
f(5) = 120

递归必须有结束,负责会死掉报错¶
•def fun_a(n):
•print (n)
•return n * fun_a(n-1)
•rst = fun_a(5)
•print ("f(5) = ",rst)

# 斐波那契额数列
#1,1,2,3,5,8,13,21  前两个数列相加
def fib (n):if n ==1 or n ==2:return 1return fib(n-1) + fib(n-2)jieguo = fib (10)
print ("jieguo=",jieguo)

jieguo= 55

# 汉诺塔
a = "A"
b = "B"
c = "C"
def hannuo(a,b,c,n):if n == 1:print ("{}-->{}".format(a,c))return Noneif n == 2:print ("{}-->{}".format(a,c))print ("{}-->{}".format(a,b))print ("{}-->{}".format(b,c))return Nonehannuo(a,c,b,n-1)print ("{}-->{}".format(a,c))hannuo(b,a,c,n-1)
# 只有一个盘子
hannuo(a,b,c,1)

A–>C

hannuo (a,b,c,5)

A–>B
A–>C
C–>B
A–>C
B–>C
B–>A
A–>C
A–>B
C–>A
C–>B
B–>A
C–>B
A–>B
A–>C
C–>B
A–>C
B–>C
B–>A
A–>C
B–>A
C–>A
C–>B
B–>A
B–>C
A–>B
A–>C
C–>B
A–>C
B–>C
B–>A
A–>C

python学习笔记四一列表元组字典等相关推荐

  1. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)

    Python学习笔记:列表.字典与集合解析(List, Dict and Set Comprehensions) 1.列表解析 最受喜爱的Python语言特性.过滤一个集合的元素生成一个新的列表. 一 ...

  2. Python学习第七课-元组字典集合

    Python学习第七课-元组&字典&集合 一.元组 1.1元组简介 1.2元组的拆包 1.3字符串拆包 1.4列表的拆包 1.5拆包练习 二.字典的简介 2.1介绍 2.2操作 三.字 ...

  3. python学习笔记(六)字典

    python学习笔记(六)字典 1.字典初见 python中的字典实际上就是一系列的"键-值"对(key-value),它们之间时无序的,每一个键都必须有与之对应的值,这个值可以是 ...

  4. 自用【Python学习记录】——列表、字典

    1.列表与字典就像整型.浮点型.字符串一样,也是一种数据类型.区别在于,前者可以储存大量数据. 2.计算机利用数据的三种方式: 1 直接使用数据 2 计算和加工数据 3 用数据做判断 [列表] 什么是 ...

  5. python学习笔记四-列表

    list列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 列表是最常用的Python数据类型,它可以作为一个 ...

  6. Python学习笔记之列表(一)

    1.什么是列表: 列表由一系列按特定顺序排列的元素组成,列表包含多个元素,通常给列表定义名称都为users,或者userList,复数或者是列表的命名来指定名称. 在Python中,用方括号([])来 ...

  7. Python学习笔记(列表和元组的简单实用)

    一.通过索引访问元素 1.列表和元组都可通过索引来访问元素 一种是正向访问,从左到右,索引从0开始,第一个元素的索引为0,第二个为1,以此类推. 另一种是反向访问,从右到左,索引从-1开始,倒数第一个 ...

  8. python学习笔记(四)字典(dict)

    创建 dict 方法 1: 创建一个空的 dict,这个空 dict,可以在以后向里面加东西用. >>> mydict = {} >>> mydict {} 不要小 ...

  9. Python学习笔记之列表切片(六)

    1.切片简单描述 什么是切片:在Python中处理列表的部分元素,称之为切片.创建切片,可指定要使用的第一个元素和最后一个元素的索引,示例代码如下: ​#列表切片lists = ['张学友','刘德华 ...

最新文章

  1. 计算机应用公共课程,公共基础课程中计算机应用管理制度
  2. python list 去重_Python中对列表list去重
  3. 【整理】SAP 看板简介
  4. 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历
  5. Linux网络编程常见面试题
  6. MotionVFX - mForm for Mac - 150种MG动态图形元素fcpx插件
  7. dhtmlXTree 指南与实例(一)
  8. 中国PaaS/SaaS市场研究(2021)
  9. root用户重置其他密码
  10. “windows无法完成格式化”解决办法
  11. linux获取电信超级密码吗,最新中国电信光猫超级密码获取方法
  12. linux iio设备
  13. Nat Commun:中国中医科学院黄璐琦院士/首都医科大学高伟教授团队联合解析雷公藤甲素生物合成关键C-14位羟化机制...
  14. Android 路由框架ARouter最佳实践
  15. Python笔记01:字符串的常见操作
  16. PFSO-T5,一种OLED材料
  17. layui分页page=true容易踩的坑
  18. 如何在线安装Axure插件?
  19. 《野兽绅士》总结4——男女互动:在野兽绅士眼中就是博弈
  20. 阿里开发手册规范(JAVA)

热门文章

  1. 图着色问题贪心算法c语言,区间图着色问题(贪心算法)C++实现
  2. 影驰名人堂送的机器人_玩转GTX 1080Ti名人堂显示屏 影驰全新魔盘使用教程
  3. MySQL中的时间函数用法集合
  4. oracle删除后电脑卡,彻底删除oracle服务 -电脑资料
  5. linux oracle12c dbca,Linux下Oracle 12c R2图形化安装笔记
  6. java发送和接收文件_Java通过套接字发送和接收文件(byte [])
  7. java重定向设置header_java – 重定向时将标题添加到Zuul
  8. Hibernate的@Temporal注解处理时间日期类型的映射关系
  9. c/c++格式化字符串的标识
  10. 【若依(ruoyi)】打印bootstrapTable数据