Python——列表

若是想要表达多个“事物”,可使用列表。
name = ['a','b','c']html

增:python

name.append('c') #在后面增长一个c
name.insert(1,'d') #增长到b前面

删:并发

name.remove('f') #删除f
del name[1] #删除编号1
name.pop(1) #删除编号1,若是不写那么就删除第一个。pop还能够将删除的值提取出来,从新赋值。
name.clear() #删除列表。

改:app

name[2]='b' #将b更改成f

查:函数

print(name[2],name[0]) #取号码进行识别
print(name[1:3]) #取1和2的值,3为结束位。切片功能
print(name[-1]) #取最后一个值
print(name[-2:]) #取最后两个值

以名字来查询:spa

print(name.index('a')) #以姓名方式来查找用户的编号
print(name.count('a')) #查看列表中有多少个a
print(name2[0:-1:2]) #每隔2个打印一次。

翻转:线程

name.reverse() #进行翻转,将文件倒过来

排序:htm

name.sort() #排序方式为,特殊符号-数字-大写-小写-中文

合并:blog

name.extend(name2) #将name2的合并到name中.name2仍然会有,和name中的名称冲突也会一直执行。

复制:排序

name2 = name.copy() #浅copy,表示只能复制第一层列表中的文字,若是添加子目录,那么就只能copy更改后的。
import copy #深copy,能够copy子层内的全部文字。
name2= copy.deepcopy(name)

extend()和append()功能相似,但在处理多个列表时,返回的结果彻底不一样。

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

若是想要在A列表中,删除B列表存在的内容:可使用:

案例:文件复制到A列表中,找到A列表想要删除的内容存放到B列表中,而后for循环B列表的内容删除A列表,最后再保存文件。

for i3 in b:
    a.remove(i3)

列表生成式:

生成式:
做用:
使代码更简洁。
和生成器一并使用。

a=[i*2 for i in range(10)] #列表生成式
print(a)

#=

a=[]           
for i in range(10):   #普通的列表形式   
 a.append(i*2)
print(a)z

列表生成器:

就至关于将列表生成式内的命令对应的内存地址显示出来,再赋值给a。

  • 能够节省大量的内存空间。
  • 只有在调用时才会生成相应的数据。
  • 只会记录当前的位置
  • 只有一个__nex__()2.7是next()方法能够进行下一个的取值。(不能跳,也不能上一个)

例句:

就是将列表生成式的[],更改成()
a=(i*2 for i in range(10))

若是想调用某一次的必须使用for循环进行
2. 用函数来作生成器:
斐波那契数列(Fibonacci),除第一个和第二个数外,任意一个数均可由前两个数相加获得:
1,1,2,3,5,8,13,21,34...

def fib(max):
    n,a,b = 0,1,1
    while n < max:
        print(a)
        a,b = b,a+b
        n=n+1
fib(10)

将数值进行保存,并赋值给f,进行生成器的转换。

def fib(max):
    n,a,b = 0,1,1
    while n < max:
        # print(a)
        yield a      #保存函数的中断状态,返回。
        a,b = b,a+b
        n=n+1
    return '---失败---'
f=fib(10)
print(f.__next__())
print('——————')
print(f.__next__())
print(f.__next__())
print(f.__next__())

特色是:
能够将函数进行中断,而后再回到函数。
能够实现并行效果。

注意:return命令,就是将错误值进行返回。并找出错误信息进行输出。

请见‘python错误信息汇总’

用装饰器来实现一个单线程下的,并发:

import time
def chibaozi(name):                #6. 运行吃包子
    print('%s 准备吃包子啦。'%name)  #7. 打印name=A开始吃包子
    while True:                     #8. 循环
        baozi = yield               #9. 中断函数并返回
        print('包子[%s]来了,被[%s]吃了'%(baozi,name))   #15. 打印包子i值和被A值吃了,结束并返回至14步
def zuobaozi(name):      #2. 运行函数
    c = chibaozi('A')    #3. 将A赋值c
    c2 = chibaozi('B')   #4. 将B赋值c2
    c.__next__()         #5. 返回值chibaozi,并将c的赋值给予给name。就是name=A
    c2.__next__()        #9. 再次进入到chibaozi函数中,并开始运行6-9,并再次返回。
    print('开始准备作包子~')   #10. 打印开始准备作包子
    for i in range(1,10):    #11. 循环10次作包子
        time.sleep(1)        #12. 时间等待1秒钟
        print('作了2个包子')   #13. 打印作了两个包子
        c.send(i)             #14. 将i值回送,并返回第9步。
        c2.send(i)             #15. 将i值回送,并返回到第9步。返回后继续运行for循环直至10次结束。
zuobaozi('xuan')          #1. 运行zuobaozi,并将xuan赋值

报错信息:

IndexError: list index out of range的错误缘由

第1种可能状况

list[index]index超出范围

第2种可能状况

list是一个空的 没有一个元素 
进行list[0]就会出现该错误

相关文章
相关标签/搜索