1. 数据类型的介绍
- 简单数据类型
整型<class 'int'>
浮点型<class 'float'>
布尔型<class 'bool'>
- 容器数据类型
列表<class 'list'>
元组<class 'tuple'>
字典<class 'dict'>
集合<class 'set'>
字符串<class 'str'>
2. 列表
- 列表的定义
列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为[元素1, 元素2, ..., 元素n]
。
关键点是“中括号[]
”和“逗号,
”前者[]
是把所有元素绑在一起,而后者,
将每个元素一一分开。
(这里的“没有固定大小”不知道怎么解释比较好,是表达对象的数量任意) - 创建一个列表
(1)普通列表
'''1 普通列表'''
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x, type(x))
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'] <class 'list'>
(2)range()创建列表
'''2 range列表'''
x = list(range(10, 1, -2))
print(x, type(x))
# [10, 8, 6, 4, 2] <class 'list'>
(3)利用推导式创建列表
回顾之前推导式的内容:
(1)列表
[ expr for value in collection [if condition] ]
(2)元组
( expr for value in collection [if condition] )
(3)字典
{ key_expr: value_expr for value in collection [if condition] }
(4)集合
{ expr for value in collection [if condition] }
x = [0 for i in range(5)]
print(x, type(x))
# [0, 0, 0, 0, 0] <class 'list'>
x = [1 for i in range(5)]
print(x, type(x))
# [1, 1, 1, 1, 1] <class 'list'>
x = [i for i in range(10)]
print(x, type(x))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class 'list'>
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x, type(x))
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99] <class 'list'>
前面的(也就是下面的代码块)是为了说明前者是表达式,接着是次数,最后是条件
x = [0 for i in range(5)]
print(x, type(x))
# [0, 0, 0, 0, 0] <class 'list'>
x = [1 for i in range(5)]
print(x, type(x))
# [1, 1, 1, 1, 1] <class 'list'>
(4)创建一个 4×3的二维数组
这里的(4)估计也是解决了我当时在这一节前面提到“没有固定大小”的疑惑。
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]]
print(x, type(x))
# [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]] <class 'list'>
for i in x:
print(i, type(i))
# [1, 2, 3] <class 'list'>
# [4, 5, 6] <class 'list'>
# [7, 8, 9] <class 'list'>
# [0, 0, 0] <class 'list'>
列表中镶嵌多个列表形成了多维数组,可以逐个列表print
出来,下面也是4
x = [[1 for col in range(3)] for row in range(4)]
print(x, type(x))
# [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]] <class 'list'>
x = [[col for col in range(3)] for row in range(4)]
print(x, type(x))
# [[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]] <class 'list'>
x[0][0] = 2
print(x, type(x))
# [[2, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]] <class 'list'>
x = [[3] * 3 for row in range(4)]
print(x, type(x))
# [[3, 3, 3], [3, 3, 3], [3, 3, 3], [3, 3, 3]] <class 'list'>
x[1][1] = 4
print(x, type(x))
# [[3, 3, 3], [3, 4, 3], [3, 3, 3], [3, 3, 3]] <class 'list'>
x = [[0] * 3] * 4
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>
x[0][0] = 1
print(x, type(x))
# [[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]] <class 'list'>
a = [0] * 3
x = [a] * 4
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>
x[0][0] = 1
print(x, type(x))
# [[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]] <class 'list'>
由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的[1,2,3]
,也有3个指针和3个整数对象。
x = [a] * 4
操作中,只是创建4个指向list的引用,所以一旦a
改变,x
中4个a
也会随之改变。
这里的指针不太明白~
(5)混合列表
mix = [1, 'lsgo', 3.14, [1, 2, 3]]
print(mix, type(mix))
# [1, 'lsgo', 3.14, [1, 2, 3]] <class 'list'
(6)空列表
empty = []
print(empty, type(empty)) # [] <class 'list'>
3 向列表添加元素
(1)list.append(obj)
在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list
中保持着原结构类型。
在下面的代码块可以看到,第一次添加了只有一个str
,第二次添加了一list
,元素如果是一个 list
,那么这个 list
将作为一个整体进行追加
x1 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x1.append('Thursday')
print(x1)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday']
print(len(x1)) # 6
x2 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x2.append(['Thursday', 'Sunday'])
print(x2)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', ['Thursday', 'Sunday']]
print(len(x2)) # 6
(2)同样具有添加能力的还有extend
list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
二者的区别:严格来说 append
是追加,把一个东西整体添加在列表后,而 extend
是扩展,把一个东西里的所有元素添加在列表后。
例如下面的例子:
x3 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x3.extend(['Thursday', 'Sunday'])
print(x3)
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday', 'Sunday']
print(len(x3)) # 7
(3)还有一个添加能力的是insert
list.insert(index, obj)
在编号 index
位置插入 obj
x4 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x4.insert(2, 'Sunday')
print(x4)
# ['Monday', 'Tuesday', 'Sunday', 'Wednesday', 'Thursday', 'Friday']
print(len(x4)) # 6
x5 = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x5.insert(2, ['Sunday','GOOD'])
print(x5)
# ['Monday', 'Tuesday', ['Sunday', 'GOOD'], 'Wednesday', 'Thursday', 'Friday']
print(len(x5)) # 6
4 删除列表中的元素
在之前也有提到列表的元素的删除方法有多种
(1)list.remove(obj)
移除列表中某个值的第一个匹配项
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x) # ['Tuesday', 'Wednesday', 'Thursday', 'Friday']
(2)list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
remove
和 pop
都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
y = x.pop()
print(y) # Friday
y = x.pop(0)
print(y) # Monday
y = x.pop(-2)
print(y) # Wednesday
print(x) # ['Tuesday', 'Thursday']
(3)del var1[, var2 ……]
删除单个或多个对象。
如果知道要删除的元素在列表中的位置,可使用del
语句。
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del
语句;如果你要在删除元素后还能继续使用它,就使用方法pop()
。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x) # ['Wednesday', 'Thursday', 'Friday']
5 获取列表中的元素
通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。
通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。
切片的通用写法是 start : stop : step
x = ['Monday', 'Tuesday', 'Wednesday', ['Thursday', 'Friday']]
print(x[0], type(x[0])) # Monday <class 'str'>
print(x[-1], type(x[-1])) # ['Thursday', 'Friday'] <class 'list'>
单个元素,Monday
和 ['Thursday', 'Friday']
都是单个元素
切片的写法有以下几种
(1) “start :”
以 step 为 1 (默认) 从编号 start 往列表尾部切片。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:]) # ['Thursday', 'Friday']
print(x[-3:]) # ['Wednesday', 'Thursday', 'Friday']
(2)": stop"
以 step 为 1 (默认) 从列表头部往编号 stop 切片。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3]) # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3]) # ['Monday', 'Tuesday']
(3) “start : stop”
以 step 为 1 (默认) 从编号 start 往编号 stop 切片。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3]) # ['Tuesday', 'Wednesday']
print(week[-3:-1]) # ['Wednesday', 'Thursday']
(4) “start : stop : step”
以具体的 step 从编号 start 往编号 stop 切片。注意最后把 step 设为 -1,相当于将列表反向排列。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2]) # ['Tuesday', 'Thursday']
print(week[:4:2]) # ['Monday', 'Wednesday']
print(week[1::2]) # ['Tuesday', 'Thursday']
print(week[::-1])
# ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']在这里插入代码片
(5) " : "
复制列表中的所有元素(浅拷贝)。
list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]
print(list2) # [123, 456, 789, 213]
print(list3) # [123, 456, 789, 213]
list1.sort()
print(list2) # [123, 213, 456, 789]
print(list3) # [123, 456, 789, 213]
list1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
print(list2) # [[123, 456], [789, 213]]
print(list3) # [[123, 456], [789, 213]]
list1[0][0] = 111
print(list2) # [[111, 456], [789, 213]]
print(list3) # [[111, 456], [789, 213]]
浅拷贝是list3 = list1[:]
,深拷贝是list2 = list1
sort方法使用后,发现深拷贝list2 = list1
已经改变了,不过浅拷贝list3 = list1[:]
还没有
6 列表的常用操作符
等号操作符:==
,只有成员、成员位置都相同时才返回True。
连接操作符 +
重复操作符 *
(列表拼接有两种方式,用+
和*
,前者首尾拼接,后者复制拼接。)
成员关系操作符 in
、not in
前面三种方法(append, extend, insert)
可对列表增加元素,它们没有返回值,是直接修改了原数据对象。 而将两个list
相加,需要创建新的 list
对象,从而需要消耗额外的内存,特别是当 list
较大时,尽量不要使用 “+
” 来添加list。
list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]
print(list1 == list2) # False
print(list1 == list3) # True
list4 = list1 + list2 # extend()
print(list4) # [123, 456, 456, 123]
list3 = list3 + list2
print(list3) # [123, 456, 456, 123]
list5 = list3 * 3
print(list5) # [123, 456, 456, 123, 123, 456, 456, 123, 123, 456, 456, 123]
list3 *= 3
print(list3) # [123, 456, 456, 123, 123, 456, 456, 123, 123, 456, 456, 123]
print(123 in list3) # True
print(456 not in list3) # False
print(1 in list3) # False
print("123" in list3) # False
自我小结:
(1)==
用于判断两个列表是不是完全相同(成员、成员位置都相同)
(append, extend, insert)
在原来的基础上进行修改
(2)+
和*
是列表拼接
(3)成员关系符in
和not in
是要和列表中的某一个元素完全对应才可以
(4)这里提到了内存的字眼,关于内存还不懂
7 列表的其它方法
(1)list.count(obj)
统计某个元素在列表中出现的次数
list1 = [123, 456] * 3
print(list1) # [123, 456, 123, 456, 123, 456]
num1 = list1.count(123)
print(num1) # 3
num2 = list1.count(1)
print(num2) # 0
这里我还加了个num2 = list1.count(1)
,回顾上面的print(1 in list3)
,可以知道是计算元素
(2)list.index(x[, start[, end]])
从列表中找出某个值第一个匹配项的索引位置
list1 = [123, 456] * 4
print(list1) # [123, 456, 123, 456, 123, 456, 123, 456]
print(list1.index(123)) # 0
print(list1.index(123, 1)) # 2
print(list1.index(123, 3, 7)) # 4
在这个方法index
中
x
是表示某个值
start
是表示开始查找的索引位置
end
是表示结束查找的索引位置
这个是会返回x
这个值的第一个匹配项的索引位置
注意索引位置是从0开始,末尾可以看成是-1
(3)list.reverse()
反向列表中元素
x = [123, 456, 789]
x.reverse()
print(x) # [789, 456, 123]
(4)list.sort(key=None, reverse=False)
对原列表进行排序。
key
– 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse
– 排序规则,reverse = True
降序, reverse = False
升序(默认)。
该方法没有返回值,但是会对列表的对象进行排序。
(什么叫没有返回值?或者什么是返回值)
x = [123, 456, 789, 213]
x.sort()
print(x)
# [123, 213, 456, 789]
x.sort(reverse=True)
print(x)
# [789, 456, 213, 123]
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
print(x)
# [(2, 2), (3, 4), (4, 1), (1, 3)]
print(takeSecond(x))
# (3, 4)
x.sort(key=takeSecond)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
x.sort(key=takeSecond,reverse=False)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
x.sort(key=takeSecond,reverse=True)
print(x)
# [(3, 4), (1, 3), (2, 2), (4, 1)]
看到其中的key
,是一个比较的标准,这里对于这个排序还是不太明白
之前的排序只是看每个元素前面的数字,这里的排序…比较的标准…不太懂
print(lambda a:a[0])
# <function <lambda> at 0x0000016796D444C8>
x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]
这里关于lambda
也很突兀
8 三道练习题
1、列表操作练习
列表lst 内容如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列操作:
在列表的末尾增加元素15
在列表的中间位置插入元素20
将列表[2, 5, 6]合并到lst中
移除列表中索引为3的元素
翻转列表里的所有元素
对列表里的元素进行排序,从小到大一次,从大到小一次
'append'
lst=[2,5,6,7,8,9,2,9,9]
lst.append(15)
print(lst)
# [2, 5, 6, 7, 8, 9, 2, 9, 9, 15]
'insert'
print(len(lst),type(len(lst)))
# 10 <class 'int'>
middle_position=len(lst)/2
print(middle_position,type(middle_position))
# 5.0 <class 'float'>
middle_position=int(len(lst)/2)
print(middle_position,type(middle_position))
# 5 <class 'int'>
lst.insert(middle_position,20)
print(lst)
# [2, 5, 6, 7, 8, 20, 9, 2, 9, 9, 15]
'extend'
lst.extend([2,5,6])
print(lst)
# [2, 5, 6, 7, 8, 20, 9, 2, 9, 9, 15, 2, 5, 6]
'del'
del lst[3:4]
print(lst)
# [2, 5, 6, 8, 20, 9, 2, 9, 9, 15, 2, 5, 6]
'翻转'
lst.reverse()
print(lst)
# [6, 5, 2, 15, 9, 9, 2, 9, 20, 8, 6, 5, 2]
'从小到大'
lst.sort()
print(lst)
# [2, 2, 2, 5, 5, 6, 6, 8, 9, 9, 9, 15, 20]
'从大到小'
lst.sort(reverse=True)
print(lst)
# [20, 15, 9, 9, 9, 8, 6, 6, 5, 5, 2, 2, 2]
2、修改列表
问题描述:
lst = [1, [4, 6], True]
请将列表里所有数字修改成原来的两倍
针对这道题目,提一下enumerate
这个函数
enumerate
是一个python
的内置函数,在字典上是枚举、列举的意思,它的作用是对于一个可迭代的(iterable
)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。多用于在for
循环中得到计数。enumerate()
返回的是一个enumerate
对象**(关于返回一个XX对象,也是不太明白的点)
对于一个seq
(sequence
(序列)),使用enumerate
会形成下面的结果
(0, seq[0]), (1, seq[1]), (2, seq[2])
如果对一个列表,既要遍历索引又要遍历元素时,可以这样写:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
# 0 这
# 1 是
# 2 一个
# 3 测试
# 下面是多了个 1
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1, 1):
print index, item
# 1 这
# 2 是
# 3 一个
# 4 测试
enumerate
还可以接收第二个参数,用于指定索引起始值
可以看到,自从指定了索引起始值
# 0 这
# 1 是
# 2 一个
# 3 测试
变成了
# 1 这
# 2 是
# 3 一个
# 4 测试
此外也介绍下之前提到的isinstance [6]
:
isinstance()
方法的语法:
isinstance(object, classinfo)
参数的介绍:
object
– 实例对象。
classinfo
– 可以是直接或间接类名、基本类型或者由它们组成的元组。
返回值:
返回值
如果对象的类型与参数二的类型(classinfo
)相同则返回 True
,否则返回 False
。
此外还有和type()
的区别,链接中有讲解,此处就不写了
a = 2
print(isinstance (a,int))
# True
print(isinstance (a,str))
# False
print(isinstance (a,(str,int,list))) # 是元组中的一个返回 True
# True
还要介绍下运算的缩写
在[7]
提到了
x op = experssion
x = x op expression
def double_list(lst):
for index, item in enumerate(lst):
if isinstance(item, bool):
continue
if isinstance(item, (int, float)):
lst[index] *= 2
if isinstance(item,list):
double_list(item)
lst = [1, [4, 6], True]
double_list(lst)
print(lst)
# [2, [8, 12], True]
3、leetcode 852题 山脉数组的峰顶索引
如果一个数组k符合下面两个属性,则称之为山脉数组
数组的长度大于等于3
存在
i
i
i,
i
i
i >0 且
i
<
len
(
k
)
−
1
i<\operatorname{len}(k)-1
i<len(k)−1, 使得
k
[
0
]
<
k
[
1
]
<
…
<
k
[
i
−
1
]
<
k
[
j
]
>
k
[
i
+
1
]
…
>
k
[
len
(
k
)
−
1
]
\mathrm{k}[0]<\mathrm{k}[1]<\ldots<\mathrm{k}[\mathrm{i}-1]<\mathrm{k}[\mathrm{j}]>\mathrm{k}[\mathrm{i}+1] \ldots>\mathrm{k}[\operatorname{len}(\mathrm{k})-1]
k[0]<k[1]<…<k[i−1]<k[j]>k[i+1]…>k[len(k)−1]这个
i
i
i就是顶峰索引。
现在,给定一个山脉数组,求顶峰索引。
示例:
输入:[1, 3, 4, 5, 3]
输出:True
输入:[1, 2, 4, 6, 4, 5]
输出:False
补充一个知识点[7]
,同时对两个列表进行循环:zip
函数
list1 = ['a', 'b', 'c', 'd']
list2 = ['apple', 'boy', 'cat', 'dog']
for x, y in zip(list1, list2):
print(x, 'is', y)
# 输出
# a is apple
# b is boy
# c is cat
# d is dog
list1 = ['a', 'b', 'c', 'd','f','g']
list2 = ['apple', 'boy', 'cat', 'dog']
for x, y in zip(list1, list2):
print(x, 'is', y)
# 输出
# a is apple
# b is boy
# c is cat
# d is dog
list1 = ['a', 'b', 'c', 'd']
list2 = ['apple', 'boy', 'cat', 'dog','panda','banana']
for x, y in zip(list1, list2):
print(x, 'is', y)
# 输出
# a is apple
# b is boy
# c is cat
# d is dog
做了三个对比,第一个是两个list的长度都是一样的,第二个和第三个都是两个长度不一样的
Python3中的zip
函数可以把两个或者两个以上的迭代器封装成生成器,这种zip生成器会从每个迭代器中获取该迭代器的下一个值,然后把这些值组装成元组(tuple
)。这样,zip函数就实现了平行地遍历多个迭代器。
如果输入的迭代器长度不同,那么,只要有一个迭代器遍历完,zip就不再产生元组了
mountain=[1,2,3,4,5,5,6,3,2,1]
max_number=max(mountain)
max_number_index=mountain.index(max_number)
print(max_number,max_number_index)
# 6 6
front_mountain=mountain[:max_number_index+1]
print(front_mountain)
# [1, 2, 3, 4, 5, 5, 6]
sorted_front_mountain=sorted(front_mountain)
print(sorted_front_mountain)
# [1, 2, 3, 4, 5, 5, 6]
if sorted_front_mountain==front_mountain:
print("前半段暂时正确")
# 前半段暂时正确
for i1,j1 in zip(front_mountain[0:],front_mountain[1:]):
if i1 < j1:
pass
else:
print("出现相等的值")
# 出现相等的值
break
else:
print("前半段明显不正确")
rear_mountain=mountain[max_number_index:]
print(rear_mountain)
# [6, 3, 2, 1]
sorted_rear_mountain=sorted(rear_mountain)
print(sorted_rear_mountain)
# [1, 2, 3, 6]
if sorted_rear_mountain==rear_mountain:
print("后半段暂时正确")
for i2,j2 in zip(rear_mountain[0:],rear_mountain[1:]):
if i2 > j2:
pass
else:
print("后半段不正确")
break
else:
print("后半段明显不正确")
# 后半段明显不正确
mountain=[1,3,4,5,3]
print("输入: ",mountain)
max_number=max(mountain)
max_number_index=mountain.index(max_number)
# print(max_number,max_number_index)
front_mountain=mountain[:max_number_index+1]
# print(front_mountain)
sorted_front_mountain=sorted(front_mountain)
# print(sorted_front_mountain)
if sorted_front_mountain==front_mountain:
pass
# print("前半段暂时正确")
for i1,j1 in zip(front_mountain[0:],front_mountain[1:]):
if i1 < j1:
pass
else:
# print("条件一没有达到")
# 出现相等的值
break
# print("条件一达到")
global aa
aa = 1
else:
pass
# print("条件一没有达到")
rear_mountain=mountain[max_number_index:]
# print(rear_mountain)
sorted_rear_mountain=sorted(rear_mountain,reverse=True)
# print(sorted_rear_mountain)
if sorted_rear_mountain==rear_mountain:
pass
# print("后半段暂时正确")
for i2,j2 in zip(rear_mountain[0:],rear_mountain[1:]):
if i2 > j2:
pass
else:
# print("条件二没有达到")
break
# print("条件二达到")
global bb
bb=1
else:
pass
# print("条件二没有达到")
if aa + bb ==2:
print("输出:True")
else:
print("输出:False")
# 输入: [1, 3, 4, 5, 3]
# True
这里我用了[9]
全局变量的概念,不过学习不深,发现只能定义一次??
此外如果前面是False
,aa和bb的相加没有用
[1]https://blog.csdn.net/leileixiang/article/details/107533311
[2]https://github.com/datawhalechina/team-learning-program/blob/master/Python-Language/06.%20%E5%88%97%E8%A1%A8.md
[3]https://www.runoob.com/python/python-func-isinstance.html
[4]https://blog.csdn.net/qq_43192537/article/details/105723829
[5]https://blog.csdn.net/churximi/article/details/51648388
[6]https://www.runoob.com/python/python-func-isinstance.html
[7]http://www.360doc.com/content/19/0702/15/54508727_846264302.shtml
[8]https://www.cnblogs.com/imageSet/p/7473326.html
[9]https://blog.csdn.net/xcd122040356/article/details/81545039