基础题(四)

17、文件操作时:xreadlines和readlines的区别?


二者使用时相同,但返回类型不同,xreadlines返回的是一个生成器,readlines返回的是list

18、列举布尔值为False的常见值?

19、字符串、列表、元组、字典每个常用的5个方法?


字符串

words = 'today is a wonderfulday'
print(words.strip('today'))#如果strip方法指定一个值的话,那么会去掉这两个值
print(words.count('a'))#统计字符串出现的次数
print(words.index('is'))#找下标
print(words.index('z'))#找下标如果元素不找不到的话,会报错
print(words.find('z'))#找下标,如果元素找不到的话,返回-1
print(words.replace('day','DAY'))#字符串替换
print(words.isdigit())#判断字符串是否为纯数字
print(words.islower())#判断字符串是否为小写字母
print(words.isupper())#判断字符串是否为大写字母
print(words.startswith('http'))#判断是否以某个字符串开头
print(words.endswith('.jpg'))#判断是否以某个字符串结尾
print(words.upper())#将字符串变成大写
print(words.lower())#将字符串变成小写

列表

sample_list = ['a',1,('a','b')]  #创建列表
sample_list = ['a','b',0,1,3]   #  Python 列表操作
value_start = sample_list[0]  #得到列表中的某一个值
end_value = sample_list[-1]  #得到列表中的某一个值
del sample_list[0]  #删除列表的第一个值
sample_list[0:0] = ['sample value']  #在列表中插入一个值
list_length = len(sample_list)  #得到列表的长度
for element in sample_list:  #列表遍历
    print(element)

元祖

#元组也是一个list,他和list的区别是元组的元素无法修改
tuple1 = (2,3,4,5,6,4,7)
print(type(tuple1))
print(tuple1[:7])
print(tuple1[:5:-1])
for i in range(6):
    print(tuple1[i])
for i in tuple1:
    print(i)

字典

dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。

dictionary的方法
D.get(key, 0)       #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key)      #有该键返回TRUE,否则FALSE
D.keys()            #返回字典键的列表
D.values()
D.items()

D.update(dict2)     #增加合并字典
D.popitem()         #得到一个pair,并从字典中删除它。已空则抛异常
D.clear()           #清空字典,同del dict
D.copy()            #拷贝字典
D.cmp(dict1,dict2)  #比较字典,(优先级为元素个数、键大小、键值大小)
                    #第一个大返回1,小返回-1,一样返回0
            
dictionary的复制
dict1 = dict        #别名
dict2=dict.copy()   #克隆,即另一个拷贝。

 20、lambda表达式格式以及应用场景?


lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。

lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:

add = lambda x, y : x+y
print(add(1,2))  # 结果为3

那么到底要如何使用lambda表达式呢?

1、应用在函数式编程中

Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:

# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
print(sorted(list1, key=lambda x: abs(x)))  #[0, -1, -2, 3, -4, 5, -6]

当然,也可以如下:

list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
    return abs(x)
print(sorted(list1,key=get_abs))  # [0, -1, -2, 3, -4, 5, -6]

只不过这种方式的代码看起来不够Pythonic

2、应用在闭包中

def get_y(a,b):
     return lambda x:a*x+b
y1 = get_y(1,1)
print(y1(1)) # 结果为2

当然,也可以用常规函数实现闭包,如下:

def get_y(a,b):
    def func(x):
        return a*x+b
    return func
y1 = get_y(1,1)
print(y1(1)) # 结果为2

只不过这种方式显得有点啰嗦。

那么是不是任何情况下lambda函数都要比常规函数更清晰明了呢?

肯定不是。

Python之禅中有这么一句话:Explicit is better than implicit(明了胜于晦涩),就是说那种方式更清晰就用哪一种方式,不要盲目的都使用lambda表达式。

21、pass的作用?

  1、空语句 do nothing

if true:
    pass #do nothing
else:
    pass #do something

  2、保证格式完整

def iplaypython():
    pass

  3、保证语义完整

while True:
    pass
原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/9169070.html