python基础-day07

列表
 向列表内添加数据:
  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
要求:将这些数保存于列表中,打印这些数
  提示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值