首页 存档 技术 查看内容

光荣之路测试开发之python学习-第21讲:列表三

2018-3-30 13:00 |来自: 互联网 319 0

摘要: 吴老的《selenium webdriver 实战宝典》出版了! 一.学习内容 * 综合列表 * 图书馆例子-实现列表增删改查 * 生成器 * 枚举 * 列表练习 二.综合列表 1. 一层列表 2. 二层列表 3. if条件判断列表 4. 字典 ...

吴老的《selenium webdriver 实战宝典》出版了!

一.学习内容

* 综合列表

* 图书馆例子-实现列表增删改查

* 生成器

* 枚举

* 列表练习

二.综合列表

1. 一层列表

[i**2 for i in range(10)]

2. 二层列表

[i j for i in range(10) for j inrange(100,110)]

3. if条件判断列表

[i for i in range(10) if i%2==0]

4. 字典综合列表

a={'name':'yml','age':25}

[k '=' str(v) fork,v in a.iteritems()]


5. 小写转大写综合列表

b=['a','b','c']

[i.upper() for i in b]

6. 小练习-输出1029的数字变成字符串

法一:

[str(i) for i in range(10,30)]


法二:

[x y for x in '12' for y in '0123456789' ifx y not in '10']


三.图书馆例子-实现列表的增删改查

# encoding = utf-8

print '*'*10, "welcome to mylibrary", '*'*10

print u'''

add增加新书

borrow:借书

lend还书

query查看所有的书

exit退出程序

'''

print '*'*43

import sys

def add():

book=raw_input('请输入您要添加的书籍:'.decode('utf-8').encode('gbk'))

print u'您已添加成功!'

list_book.append(book)

def borrow():

book=raw_input('请输入您要借的书籍:'.decode('utf-8').encode('gbk'))

try:

list_book.remove(book)

print u'您已借书成功!'

except Exception,e:

print u'图书馆中没有该书,不能借阅!'

def lend():

book=raw_input('请输入您要还的书籍:'.decode('utf-8').encode('gbk'))

print u'您已添加成功!'

list_book.append(book)

def query():

if len(list_book)==0:

print u'抱歉,图书馆目前没有可供查阅的书籍!'

else:

print u'图书馆目前所有书籍为:'

print ' '.join(list_book)

def exit():

sys.exit()

list_book=[]

while True:

try:

command=raw_input('请输入你要进行的操作:'.decode('utf-8').encode('gbk'))

exec(command "()")

except Exception,e:

print u'请输入如下指定操作:\nadd增加新书\nborrow:借书\nlend还书\nquery 查看所有的书\nexit 退出程序\n'

运行结果为:


四.生成器

1. 生成器和元组的区别

生成器可以不必创建完成的list,而是在循环的过程中不断推出后面的元素,从而节省大量的空间,能够一边循环一边计算,称为生成器。

推导列表为[]包裹,而生成器()包裹

b=[x for x in range(10)]

b=(x for x in range(10))

b.next()


2. 生成器next()

c=(i for i in range(10))

c.next()

c=(i for i in ('a','b','c'))

c.next()

c=(i for i in ['test','yml'])

c.next()


3. 生成器type

c=(i for i in['test','yml'])

type(c)


4. 生成器yield输出函数

# -*- coding: utf-8 -*-

def odd():

print 'step 1'

yield 1

print 'step 2'

yield 3

print 'step 3'

yield 5

o = odd()

print o.next()

print o.next()

print o.next()

print o.next()

#for i in o:

#print i #可以遍历执行函数


五.枚举

for i,value in enumerate(['a','b',3,4]): #不仅打印结果还会输出序号

print i,value


六.列表练习

1. 练习题一:找到两个列表中不同的元素和相同元素

代码为:

#encoding=utf-8

u'''

找到两个列表中不同的元素和相同元素

'''

listA=[1,3,4,'a','b',[8,9,6]]

listB=[1,'a',8]

list_common=[]

for i in listA:

for j in listB:

if i==j:

list_common.append(j)

print u'列表中相同元素为:%s' % list_common

def delete_common(list):

iflist not in list_common:

return True

listA=filter(delete_common,listA)

listB=filter(delete_common,listB)

print u'列表listA中不同的元素为:%s' %listA

print u'列表listB中不同的元素为:%s' %listB

运行结果为:

2. 练习题二:数字和字母混合的list中,奇数位加1,偶数为加2

代码为:

#encoding=utf-8

u'''

数字和字母混合的list中,奇数位加1,偶数为加2

'''

import string

def add_data(list):

list_new=[]

index=1

for i in list[::2]:

if str(i) in string.ascii_letters:

list_new.append(chr(ord(i) 1))

else:

list_new.append(i 1)

for i in list[1::2]:

if str(i) in string.ascii_letters:

list_new.insert(index,chr(ord(i) 2))

else:

list_new.insert(index,(i 2))

index=index 2

return list_new

list=[1,'a','a',4,3,'b',6]

print add_data(list)

运行结果为:

3. 练习题三:递归处理嵌套的list,返回list

代码为:

#encoding=utf-8

u'''

递归处理嵌套的list,返回list

'''

result=[]

def print_list(datas):

for data in datas:

if isinstance(data,(list,tuple)):

print_list(data)

else:

result.append(data)

return result

list_new=[1,2,[5,6],[3,4,['a','b',(3,4,'b')]]]

print print_list(list_new)

运行结果为:

4. 练习题四:遍历list,但是list中元素的数据类型不定,有可能有嵌套的list,嵌套的tuple dict

代码为:

#encoding=utf-8

u'''

遍历list,但是list中元素的数据类型不定,有可能有嵌套的list,嵌套的tuple dict

'''

result=[]

def print_list(datas):

for data in datas:

if isinstance(data,(list,tuple)):

print_list(data)

elif isinstance(data,dict):

for key,value in data.items():

print key,value

else:

print data

list_new=[1,2,[5,6],[3,4,['a','b',(3,4,'b')]],{'name':'yml','age':25},(1,'b')]

print_list(list_new)

运行结果:

5. 练习题五:通过遍历list去掉重复部分

代码为:

#encoding=utf-8

u'''

通过遍历list去掉重复部分

'''

dict1={}

def print_list(list_new):

for i in list_new:

dict1[i]=1

list_new=[]

for i in dict1.keys():

list_new.append(i)

return list_new

list_new=[1,2,3,2,2,2,3,4,5]

print print_list(list_new)

运行结果为:

6. 练习题六:键盘读入一字符串,逆序输出

代码为:

#encoding=utf-8

u'''

键盘读入一字符串,逆序输出

'''

#method1

while True:

data=raw_input('请输入一串字符串:'.decode('utf-8').encode('gbk'))

print data[::-1]

运行结果为:


安装喜马拉雅app,搜索“光荣之路”可以收听吴老和他的朋友们分享的35小时测试知识语音


光荣之路
软件测试培训


官网:www.gloryroad.cn
微信公众号:gloryroadtrain
性能测试QQ群:415987441
测试招聘QQ群: 203715128
Java2群:569534627
Python群:457561756
咨询V信:mengqiao626
咨询QQ:53617154



声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部