Python基础

1.yield的作用
答:yield是一个生成器,其返回的是一个iterable(迭代对象)
例如:
在这里插入图片描述
for n in feibo(10):
print(n)
2.xrange和range的区别?
答:#range产生的是一个列表,xrange产生的是生成器。
#数据较大时xrange比range好。
#Range一下把数据都返回,xrange通过yield每次返回一个。
参考:https://www.cnblogs.com/pupilheart/articles/9786253.html

3.文件操作时:xreadlines和readlines的区别?
答:# Readlines:读取文件的所有行,返回一个列表,包含所有行的结束符

Xreadlines:返回一个生成器,循环使用和readlines基本一致 。(py2有,py3没有)

4.字符串、列表、元组、字典每个常用的5个方法?
答:
#Str(字符串):
Split:分割
Strip:去掉两边的空格
Startwith:以什么开头
Endwith:以什么结尾
Lower:小写
Upper:大写
#List(链表):
Append:追加
Insert:插入
Reverse:反转
Index:索引
Copy:拷贝
Pop:删除指定索引处的值,不指定索引默认删除最后一个。
#Tuple(元组):
Count:查看某个元素出现的次数
Index:索引
#Dict(字典):
Get:根据key取value
Items:用于循环,取出所有key和value
Keys:取出所有key
Values:取出所有的value
Clear:清空字典
Pop:删除指定键对应的值,有返回值;

5.lambda表达式格式以及应用场景?
答:

格式:

匿名函数:res = lambda x:i*x   print(res(2))

应用场景:

Filter(),map(),reduce(),sorted()函数中经常用到,它们都需要函数形参数;
一般定义调用一次。
(reduce()对参数序列中元素进行累积)

6.*arg和kwarg作用**
答:

他们是一种动态传参,一般不确定需要传入几个参数时,可以使用其定义参数,然后从中取参

‘*args’:按照位置传参,将传入参数打包成一个‘元组’(打印参数为元组-- tuple)
‘**kwargs’:按照关键字传参,将传入参数打包成一个‘字典’(打印参数为字典-- dict)

7.is和==的区别
答:
==:判断某些值是否一样,比较的是值
is:比较的是内存地址(引用的内存地址不一样,唯一标识:id)

8.简述Python的深浅拷贝以及应用场景?
答:
#浅拷贝:
不管多么复杂的数据结构,只copy对象最外层本身,该对象引用的其他对象不copy,
内存里两个变量的地址是一样的,一个改变另一个也改变。
#深拷贝:
完全复制原变量的所有数据,内存中生成一套完全一样的内容;只是值一样,内存地址不一样,一方修改另一方不受影响

9.Python的可变类型和不可变类型?
答:

可变类型:列表、字典、集合

不可变类型:数字、字符串、元祖

(可变与否指内存中那块内容value)

10.求结果
答:
v = dict.fromkeys([‘k1’, ‘k2’], [])

内存中k1和k2都指向同一个,只要指向的[]发生变化,k1和k2都要改变(保持一致)

v[‘k1’].append(666)
print(v) # {‘k1’: [666], ‘k2’: [666]}
v[‘k1’] = 777
print(v) # {‘k1’: 777, ‘k2’: [666]}

11.列举常见的内置函数?
答:

map:遍历序列,为每一个序列进行操作,返回一个结果列表

l = [1, 2, 3, 4, 5, 6, 7]
def pow2(x):
return x * x
res = map(pow2, l)
print(list(res)) #[1, 4, 9, 16, 25, 36, 49]

reduce:对于序列里面的所有内容进行累计操作

from functools import reduce
def add(x, y):
return x+y
print(reduce(add, [1,2,3,4])) #10

filter:对序列里面的元素进行筛选,最终获取符合条件的序列。

l = [1, 2, 3, 4, 5]
def is_odd(x): # 求奇数
return x % 2 == 1
print(list(filter(is_odd, l))) #[1, 3, 5]

#zip用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
a = [1,2,3]
b=[4,5,6]
c=[4,5,6,7,8]
ziped1 = zip(a,b)
print(‘ziped1>>>’,list(ziped1)) #[(1, 4), (2, 5), (3, 6)]
ziped2 = zip(a,c)
print(‘ziped2>>>’,list(ziped2)) #[(1, 4), (2, 5), (3, 6)],以短的为基准

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九霄王

我们一起为这个世界努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值