PythonDay4——For循环,列表,元组

it2022-05-05  125

一、For循环(未完待补充)

(1). for循环和range函数 for循环除了创建方式以外,其余的都和while一样,包括 else,break,continue都可以在for循环中使用**

range() 可以生成一个自然数序列 r = range(5) # 生成一个这样的序列 r = range(0, 10, 2) 该函数需要三个参数: 1.起始位置 2.结束位置 3.步长(可以省略,默认为1)(步长不能为0,为0会抛异常,可以为负数,会倒序输出)

通过range()可以创建一个执行指定次数的for循环: 例如:

for i in range(5) print(i,end = ‘ ’)

运行截图:

for i in range(10, 20, 2): print(i, end=' ')

运行截图:

for i in range(18, 8, -3): print(i, end=' ')

运行截图:

a = ['a', 'b', 2, 3] for i in range(len(a)): print(a[i], end=' ')

运行截图:

二、列表(list)

**

列表

(list) 列表是Python中的一个对象 对象(object):就是内存中专门用来存储数据的一块区域 列表中可以保存多个有序**的数据 列表的使用: 1.列表的创建 2.操作列表中的数据 创建列表 ,通过[]来创建列表

列表存储的数据,我们称为元素 一个列表中可以存储多个元素,也可以在创建列表时,来指定列表中的元素 列表可以为空,列表中添加多个元素时,多个元素之间用 , 隔开 列表可以保存任意类型的对象 my_list = [10,‘Hello’, True, None, [1, 2, 3], print ]

#列表中的对象都会按照插入的顺序存储到列表中 #第一个的对象保存到第一个位置,第二个保存到第二个位置 #我们可以通过索引(index)来获取表中的元素 #索引是元素在列表中的位置,列表中的每一个元素都有一个索引 #索引是从 0 开始的整数,列表第一个位置的索引为0,第二个位置索引为1 以此类推 语法 my_list[0] 如果是使用的索引超过了最大的范围,会抛出异常 len()函数 #获取列表的长度,列表中的元素的个数 #len()函数,通过该函数可以获取列表的长度 获取到的长度的值,是列表的最大的索引 + 1

代码举例:

a = [] b = [1, 2] print(type(a), a) print(type(b), b)

运行截图:

a = [1, 'a', 'b', 'c'] x = len(a) print('长度', x) print(a[0], a[1], a[2])

运行截图:

a = [1, 'a', 'b', 'c'] i = 0 while i < len(a): print('第', i + 1, '个值是:', a[i]) i += 1

运行截图:

步长

语法:列表[起始:结束:步长] 步长表示,每次获取元素的间隔,默认值为1 步长可以是负数,但不能为0 如果是负数,则从列表的后部向前面取元素

+ 和 *

" + "可以将两个列表拼接为一个列表 " * "可以将列表重复指定的次数

a = [1, 2] b = [3, 4, 5] c = a + b print(c ) d = a * 3 print(d) x = a[1] + b[2] print(x)

代码的拼接,重复打印,两个列表里的数值运算 运行截图:

切片

#切片指从现有的列表中,获取一个子列表 #创建一个列表,一般创建列表时,变量的名字会使用复数(多个数据)

#列表的索引可以是负数 #如果索引是负数,则从后向前获取元素, -1 表示倒数第一个,-2表示倒数第二个,以此类推

#通过切片来获取指定的元素 #语法:列表[起始 : 结束 ] #通过切片获取元素时,会包括起始位置的元素,不包括结束位置的元素 #做切片时 , 总会返回一个新的列表,不会影响原来的列表 #起始位置和结束位置的索引都可以省略不写 如果省略结束位置,会截取到最后,开始同理 如果开始位置和结束位置全部省略,则相当于创建了一个列表的副本

a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] b = a[2:5] # 根据索引 print(b) c = a[2:8:2] print(c) d = a[2:] print(d) e = a[:3] # 不包含索引为3的数据 print(e)

运行截图:

a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] b = a[-1] print(b)

a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] for i in range(-1, -len(a) - 1, -1): print(a[i])

运行截图:

a, *b = [1, 2, 3] print(a, b)

加上*号,会将列表中第二个开始到结束的数据以列表的形式给b

*a, b = [1, 2, 3] print(a, b)

运行截图:

列表的方法

通过方法修改列表

append()方法

stus = ['孙悟空', '猪八戒', '沙僧'] stus.append('唐僧') #在列表最后加上“唐僧” print(stus)

运行截图;

a = [1, 2, 3, 4, 5] a.append(9) print(a)

运行截图:

a = [1, 2, 3] b = a a.append(4) # a和b所指的地址一样,改变a,b也变 print(a) print(b)

运行截图:

insert()方法

向列表的指定位置插入一个元素 #参数 #1.要插入的位置 #2.要插入的元素

stus = ['孙悟空', '猪八戒', '沙僧'] stus.insert(2, '唐僧') # 2 为下标索引位置 print(stus)

运行截图:

extend()方法

#使用新的序列来扩展当前序列(extend改变了原来的列表,+ 号没有改变原来的列表) #需要一个序列作为参数,它会将该序列的元素添加到当前列表中

a = [1, 2, 3, 4, 5] b = [3, 4] a.extend(b) c = [5, 6] print(a)

运行截图: pop()方法

pop()根据索引删除并返回被删除的元素的值 括号里为空默认删除最后一个

a = [1, 2, 3, 4, 5] b = a.pop() print(b) b = a.pop(2) print(a, b)

运行截图:

remove()方法

#删除**指定值(不根据索引)**的元素 stus.remove(‘猪八戒’) 如果有重复元素,只会删除第一个,没有返回值

a = [1, 2, 3, 4, 5] a.remove(3) print(a)

运行截图: del方法

根据索引来删除元素 c = [1, 2, 3, 4] for i in range(len©): del c[0] print( c ) 运行截图:

a = [1, 2, 3, 4, 5] del a[2] print(a)

运行截图:

reverse()方法

#用来反转列表

a = [1, 2, 3, 4, 5] a.reverse() print(a)

运行截图: sort()方法

对列表中的数据进行排序(默认从小到大排序)

a = [3, 2, 1, 5, 7, 3, 8] a.sort() print(a)

运行截图: 逆序排序(利用reverse函数)

a = [3, 2, 1, 5, 7, 3, 8] a.sort(reverse=True) print(a)

运行截图:

sorted()方法

a = [3, 2, 1, 5, 7, 3, 8] b = sorted(a) # 对a不改变,排序赋给b print(b)

运行截图:

sort()方法和sorted()方法的区别 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

count()函数 count() 方法用于统计字符串里某个字符出现的次数。 可选参数为在字符串搜索的开始与结束位置。 count()方法语法: str.count(sub, start= 0,end=len(string)) sub – 搜索的子字符串 start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。 end – 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

a = [3, 2, 1, 5, 7, 3, 8] b = a.count(3) print("3的个数:", b)

运行截图:

index()方法 Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。 语法: str.index(str, beg=0, end=len(string)) str – 指定检索的字符串 beg – 开始索引,默认为0。 end – 结束索引,默认为字符串的长度。

a = [3, 2, 1, 5, 7, 3, 8] x = a.index(2) # 返回第一次出现2的索引 print(x)

运行截图: is 和 is not

is 和is not 比较的是对象的id是否相等

a = [1, 2, 3] b = [1, 2, 3] print(a == b) print(a is b) print(id(a)) print(id(b))

列表里的元素相同,但是内存地址不一致,所以a和b所指的内存地址不一样 运行截图: copy()方法

copy()浅拷贝:只拷贝列表最外 deepcopy()深拷贝:由列表最内层向外拷贝,拷贝所有元素

import copy a = [1, 2, 3, [4, 5], 6] b = a c = copy.copy(a) d = copy.deepcopy(a) a.append(7) a[3].append(99) print(a, id(a)) print(b, id(b)) print(c, id(c)) print(d, id(d))

运行结果: 原理图:

三、元组(tuple)

元组(tuple)

元组是一个不可变的序列 它的操作方式基本上和列表是一致的 所以在操作元组时,把元组当成不可变的列表就可以

一般当我们希望数据不改变时,就使用元组 创建元组 使用()来创建元组 my_tuple = (1, 2, 3, 4, 5) #创建了一个5个元素的元组 #元组是不可变对象, 不能尝试为了元组中的元素重新赋值 #my_tuple[3] = 10 NameError: name ‘my_tuple’ is not defined print(my_tuple[3])

#当元组不是空元组时,括号可以省略 #如果元组不是空元组,它里面至少要有一个逗号

a = (1,) b = (1) c = 1, 2 print(type(a)) print(type(b)) print(type(c))

运行截图

a = (1, 2, 3, 4) b = (1, 2) i = 0 while i < len(a): print(a[i], end=' ') i += 1

切片一样可以用

a = (1, 2, 3, 4) print(a[2::1]) # 运行结果:(3, 4)

运行截图 元组不可修改,但是元组中的列表可以修改

a = (1, 2, 3, [4, 5]) a[3].append(9) print(a)

运行截图:

a = ('a', 'b', 'c', 'e') for x in enumerate(a): # 加上索引值 print(x)

运行截图:


最新回复(0)