【Python】2020.03.04学习笔记|列表- 操作符函数operator、列表操作函数、自动生成列表、综合列表(列表推导)

  • 学习测试开发的Day63
  • 学习时间55分钟
  • 第六次全天课20190119(下午视频3H15M-4H08)

操作符函数operator

image.png
>>> a=[1]*10
>>> a
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> a[0]=100
>>> a
[100, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> a[-1]=100
>>> a
[100, 1, 1, 1, 1, 1, 1, 1, 1, 100]
>>> a[4:9]=[2,4,3,8,9]
>>> a
[100, 1, 1, 1, 2, 4, 3, 8, 9, 100]
>>>
>>> import operator
>>> operator.add(1,1)
2
>>> operator.sub(1,1)
0
>>> operator.mul(2,1)
2
>>> operator.truediv(1,2)
0.5
>>> operator.eq(1,1)
True
>>> operator.lt(1,1)
False
>>> operator.lt(2,1)
False
>>> operator.lt(1,2)
True


>>> dir(operator)
['__abs__', '__add__', '__all__', '__and__', '__builtins__', '__cached__', '__concat__', '__contains__', '__delitem__', '__doc__', '__eq__', '__file__', '__floordiv__', '__ge__', '__getitem__', '__gt__', '__iadd__', '__iand__', '__iconcat__', '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__', '__imul__', '__index__', '__inv__', '__invert__', '__ior__', '__ipow__', '__irshift__', '__isub__', '__itruediv__', '__ixor__', '__le__', '__loader__', '__lshift__', '__lt__', '__matmul__', '__mod__', '__mul__', '__name__', '__ne__', '__neg__', '__not__', '__or__', '__package__', '__pos__', '__pow__', '__rshift__', '__setitem__', '__spec__', '__sub__', '__truediv__', '__xor__', '_abs', 'abs', 'add', 'and_', 'attrgetter', 'concat', 'contains', 'countOf', 'delitem', 'eq', 'floordiv', 'ge', 'getitem', 'gt', 'iadd', 'iand', 'iconcat', 'ifloordiv', 'ilshift', 'imatmul', 'imod', 'imul', 'index', 'indexOf', 'inv', 'invert', 'ior', 'ipow', 'irshift', 'is_', 'is_not', 'isub', 'itemgetter', 'itruediv', 'ixor', 'le', 'length_hint', 'lshift', 'lt', 'matmul', 'methodcaller', 'mod', 'mul', 'ne', 'neg', 'not_', 'or_', 'pos', 'pow', 'rshift', 'setitem', 'sub', 'truediv', 'truth', 'xor']
>>>

image.png
image.png
image.png

Python列表操作函数:(仅对列表有用)

image.png

pop例子:

>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.pop()
9
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a.pop()
8
>>> a
[0, 1, 2, 3, 4, 5, 6, 7]

>>> a.pop()
7
>>> a
[0, 1, 2, 3, 4, 5, 6]
>>>

count

>>> a.count(4)
1

extend()

>>> a.append(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>> b=[9,9,9]
>>> a.append(b)
>>> a
[0, 1, 2, 3, 4, 5, 6, [9, 9, 9]]
>>> a.extend(b)
>>> a
[0, 1, 2, 3, 4, 5, 6, [9, 9, 9], 9, 9, 9]
>>>

sort()和sorted()

sort会改变原有列表的值
sorted不会改变原有列表的值

>>> a=[4,3,21,-1,5]
>>> b=sorted(a)
>>> b
[-1, 3, 4, 5, 21]
>>> a
[4, 3, 21, -1, 5]
>>> b=a.sort()
>>> print(b)
None
>>> a
[-1, 3, 4, 5, 21]
>>>

reverse() 反转

>>> a
[-1, 3, 4, 5, 21]
>>> a.reverse()
>>> a
[21, 5, 4, 3, -1]
>>>

sort函数

image.png
a=[[1,2,3],[2,3,4],[-1,3,2]]

def get(L):
    return L[2]

a.sort(key=get,reverse=False)
print(a)
PS D:\0grory\day6> python .\sort.py
[[-1, 3, 2], [1, 2, 3], [2, 3, 4]]
a=[[1,2,3],[2,3,4],[-1,3,2]]

def get(L):
    return L[1]

a.sort(key=get,reverse=False)
print(a)
PS D:\0grory\day6> python .\sort.py
[[1, 2, 3], [2, 3, 4], [-1, 3, 2]]
a=[[1,2,3],[2,3,4],[-1,3,2]]

def get(L):
    return L[1]

a.sort(key=get,reverse=True)
print(a)
PS D:\0grory\day6> python .\sort.py
[[2, 3, 4], [-1, 3, 2], [1, 2, 3]]

使用元组的最后一个元素大小比较来实现 list 的排序:

list1 = [(3,5,3),(5,3,6,3),(1,1,2,4,5,6),(2,9)]
def L(tup) :
return tup[-1]
list1.sort(key = L,reverse = True)
print (list1)

自动生成列表

生成递增列表:

>>> list1 = list(range(10))
>>> list1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list2 = list(range(1, 10))
>>> list2
[1, 2, 3, 4, 5, 6, 7, 8, 9]

加步长生成递增列表:

>>> list3 = list(range(1, 10, 2))
>>> list3
[1, 3, 5, 7, 9]
>>> range(0,10)
range(0, 10)
>>> list(range(10)
... )
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(10):print(i,"")
...
0
1
2
3
4
5
6
7
8
9
>>> for i in list(range(10)):print(i)
...
0
1
2
3
4
5
6
7
8
9
>>>

列表复制

image.png

引用复制

>>> a=[1,2,3,4]
>>> a
[1, 2, 3, 4]
>>> b=a
>>> b
[1, 2, 3, 4]
>>> a.remove(1)
>>> b
[2, 3, 4]
>>> id(a)
2584104191560
>>> id(b)
2584104191560
>>>

非引用复制

>>> a=[1,2,3,4]
>>> b=a[:]
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
>>> a.remove(1)
>>> a
[2, 3, 4]
>>> b
[1, 2, 3, 4]
>>>
image.png

增删改查遍历的综合操作

代码示例:

#encoding=utf-8
booklist=[u'selenium Webdriver 实战宝典','thinking in java',u'异类','how 
google test software',u'探索式测试']
#计算列表的长度
print ('你一共有',len(booklist),'本书')
print ('我所有的书名是:')
#遍历列表
for book in booklist:
print (book)
print ('新买了一本书《python cookbook》')
#列表中增加元素
booklist.append('python cookbook')
#打印列表对象
print ('我当前的书:',booklist)
#列表排序
booklist.sort()
print ("排序后的书目列表:",booklist)
#查找列表的指定元素
print ("我的第一本书:",booklist[0])
print ("我的最后一本书:",booklist[len(booklist)-1])
#删除某个列表元素
del booklist[0]
print ("卖掉我的第一本书后,我的数据列表是:",booklist)
#修改某个列表元素
booklist[len(booklist)-1]='Testng cookbook'
print ("修正我的最后一本书的书名:",booklist[len(booklist)-1])

列表的排序

代码示例:

x=[4,6,2,1,7,9,4]
y=x[:]
y.sort()
print (x)
print (y)

执行结果:

[4, 6, 2, 1, 7, 9, 4]

[1, 2, 4, 4, 6, 7, 9]

综合列表(列表推导)

image.png

推导列表

>>> a=[i for i in range(10) if i%2==0]
>>> a
[0, 2, 4, 6, 8]
>>>
i for i in range(10) if i%2==0

等价于

a=[]
for i in range(10):
    if i%2==0:
        a.append(i)
print(a)

只写一个for也可以

>>> a=[i for i in range(5)]
>>> a
[0, 1, 2, 3, 4]
>>>

放表达式也可以

>>> a=[i*i for i in range(5)]
>>> a
[0, 1, 4, 9, 16]
>>>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容