列表
向列表内添加数据:
L=[0:0]=[100,200]
修改数据:
L[1]=300
L[1:5]=[1,2,3]
删除数据:
(1)L[1:5]=[]
del 语句:
用于删除列表的元素
示例:
del L[2] #删除单个元素
del L[::2] #删除切片切出来的部分
练习:
已知有列表:
L=[3,5]
用索引的切片等操作,将原列表的改变为:
L=[1,2,3,4,5,6]
将列表反转(先后顺序颠倒),删除最后一个元素,打印此列表
L=[3,5]
L[0:0]=[1,2]
L[3:3]=[4]
L[6:6]=[6]
print(L)
L=L[::-1]
del L[-1]
print(L)
pthon3中常用的序列函数
len(x) 返回序列长度
max(x) 返回序列最大值
min(x) 返回序列最小值
sum(x) 返回序列所有元素的和(元素必须是整数类型)
any(x) 真值测试,如果序列中其中一个值为真值则返回True
all(x) 真值测试,如果序列中所有值为真值才返回True
示例:
L=['one',2,'三']
print(len(L)) #3
L=[8,3,6,2]
min(L) #2
练习:
1输入三个数,存于列表中,打印出这三个数的最大值,最小值,平均值
a=int(input('输入第一个数字'))
b=int(input('输入第二个数字'))
c=int(input('输入第三个数字'))
L=[a,b,c]
print(L)
print('最大值为:',max(L),'最小值为:',min(L),'平均值为:',sum(L)/len(L))
2写程序,让用户循环输入一些数,当输入-1时结束输入,将这些数存于列表L中
(1)打印共输入了几个有效的数
(2)打印输入的最大值
(3)打印输入的平均值
L=[]
while True:
a=int(input('请输入一些数'))
if a==-1:
break
L+=[a]
print(L)
print('有效数:',len(L),'最大数:',max(L),'平均值:',sum(L)/len(L))
列表的常用的列表方法:
文档参见:aid1808html
深拷贝和浅拷贝
浅拷贝: shallow copy
浅拷贝是指在对象复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程
如:
L=[3.1,3.2]
L1=[1,2,L]
L2=L1.copy() #浅拷贝
L[0]=3.14
print(L1)
print(L2)
深拷贝(deep copy)
inport copy #导入复制模块
L=[3.1,3.2]
L1=[1,2,L]
L2=copy.deepcopy(L1) #深拷贝
print(L1) # [1,2,[3.1]]
print(L2)
L2[2][0]=3.14
print(L1)
print(L2)
print(L)
列表与字符串比较:
都是序列,元素之间有先后顺序关系
字符串是不可变序列,列表是可变序列
字符串中每个元素只能存储字符(编码),而列表可以存储任意类型的元素
列表和字符串都是可迭代对象
字符串文本解析方法split 和join
S.split(sep=None)将字符串,使用sep作用分隔符分割,S字符串,返回分割后的字符串列表,当不给定参数时
用空白字符作用分隔符分割
S.join(iterable) 用可迭代对象中的字符串中,返回一个中间用S进行分隔的字符串
示例:
s='beijing is capital'
l=s.split(' ') #l=['beijing','is','capital']
s2=['aaa','bbb','ccc']
'#'.join(s2) # aaa#bbb#ccc
练习:
有字符串
'hello'
请生成如下字符串:
'h e l l o' 和 'h-e-l-l-o
' '.join(s)
'-'.join(s)
列表推导式
用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
示例:
生成一个数值为1~9的平方的列表
l=[x**2 for x in range(1,10)] 用列表推导式
练习:
用列表推导式生成1~100内所有奇数的平方的列表
l=[x**2 for x in range(1,100,2)]
l=[x**2 for x in range(1,100) if x%2==0] 偶数
写程序,输入一个开始的整数用begin绑定
输入一个结束值用end绑定
将begin开始到end 结束所有偶数存于列表中并打印
begin=int(input('请输入开始值:'))
end=int(input('请输入结束值'))
l=[x for x in range(begin,end) if x%2==0]
print(l)
2让用户输入很多整数,(包含正整数,负整数)报程列表l中,0结束输入,然后把正整数存在l1中,负整数存在l2中
打印l1,l2
l=[]
while True:
a=int(input('请输入整数'))
l.append(a)
if a==0:
break
print(l)
l1=[ x for x in l if x<0]
l2=[ x for x in l if x>0]
print(l1)
print(l2)
列表推导式的嵌套
[表达式1
for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2
...]
示例:
将列表[10,20,30]中的元素与列表[1,2,3]中的元素分别相加,得到的新元素放于一个列表中
l=[x+y for x in [10,20,30] for y in [1,2,3]]
l=[11, 12, 13, 21, 22, 23, 31, 32, 33]
练习: 用字符串'ABC'和'123'生成如下列表
l=[x+y for x in 'ABC' for y in '123' ]
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
1已知有一个字符串:
s='100,200,300,500,800'
将其转换为数字组成的列表,列表内部为整数
l=[100,200,300,500,800]
s='100,200,300,500,800'
l=s.split(',')
l=[int(x) for x in l]
print(l)
2用列表推导式生成如下表“
l=[1,4,7,10,...100]
l=[x for x in range(1,100,3)]
print(l)
3用列表推导式生成如下表
[[1,2,3],[4,5,6],[7,8,9]]
l=[[x,x+1,x+2] for x in range(1,8,3)]
print(l)
l=[a*100+b*10+c
for a in range(1,10)
for b in range(0,10)
for c in range(0,10)
if a**3+b**3+c**3==a*100+b*10+c]
print(l)
练习:
1有一些数存于列表中,如:
(1)l=[1,3,2,1,6,3,...98,82],将列表l数字存到另一个列表l2中
要求:重复出现多次的数字在l2中只保留一个
(2)将列表中出现两次的数字存于列表l3中,在l3中只保留一份
2计算出100以内的全部的素数,将这些素数存于列表中,然后打印列表中的素数
3生成前40个斐波那契数列中的数
1 1 2 3 5 8 13 21
要求:将这些数保存于列表中,打印这些数
提示:
python基础-day07
最新推荐文章于 2022-10-06 13:20:01 发布