04 列表(源于Datawhale)

1. 数据类型的介绍

  1. 简单数据类型
    整型<class 'int'>
    浮点型<class 'float'>
    布尔型<class 'bool'>
  2. 容器数据类型
    列表<class 'list'>
    元组<class 'tuple'>
    字典<class 'dict'>
    集合<class 'set'>
    字符串<class 'str'>

2. 列表

  1. 列表的定义
    列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, ..., 元素n]
    关键点是“中括号 []”和“逗号 ,”前者[]是把所有元素绑在一起,而后者,将每个元素一一分开。
    (这里的“没有固定大小”不知道怎么解释比较好,是表达对象的数量任意)
  2. 创建一个列表
    (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]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
removepop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。

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。
连接操作符 +
重复操作符 *(列表拼接有两种方式,用+*,前者首尾拼接,后者复制拼接。)
成员关系操作符 innot 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)成员关系符innot 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对象,也是不太明白的点)
对于一个seqsequence(序列)),使用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[i1]<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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值