Python 三十个实践、建议和技巧,Python面试题及答案

一个非常基础的例子,用于生成包含连续数字的列表:

mylist = [i for i in range(10)]

print(mylist)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

由于可以使用表达式,因此可以通过更复杂的数学方法来生成列表:

squares = [x**2 for x in range(10)]

print(squares)

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

甚至也可以调用外部函数:

def some_function(a):

return (a + 5) / 2

my_formula = [some_function(i) for i in range(10)]

print(my_formula)

[2, 3, 3, 4, 4, 5, 5, 6, 6, 7]

最后,也可以用if作为生成条件来对列表进行过滤。在下面的例子中,只有偶数被保留:

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

print(filtered)

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

5、检查对象的内存占用情况

通过sys.getsizeof(object)命令可以查看任何对象的内存使用情况:

import sys

mylist = range(0, 10000)

print(sys.getsizeof(mylist))

48

这是因为range函数返回的是一个类对象,这个类对象表现为一个列表。因此使用range函数比使用实际的包含一万个数字的列表要更加节省内存。可以通过上面第四条中提到的列表解析式创建一个同样大小的实际列表:

import sys

myreallist = [x for x in range(0, 10000)]

print(sys.getsizeof(myreallist))

87632

实际内存占用87632字节,远高于通过range函数生成的对象。

6、返回多个值

Pyhon中的函数都可以返回多个变量,而不需要字典,列表或者类作为返回对象。方法如下:

def get_user(id):

fetch user from database

return name, birthdate

name, birthdate = get_user(4)

对于有限数量的返回值,这是可以的。但是任何超过3个值的内容都应该放到一个(data)类中。

7、使用 data 类

从3.7版本开始,python提供了 data 类。与常规类或其他替代方法(如返回多个值或字典)相比,有以下几个优点:

  • 数据类需要至少一定数量的代码

  • 可以通过 eq 方法来比较不同的data类对象

  • 可以 repr 通过很容易地打印一个数据类来进行调试

  • 数据类需要类型提示,因此减少了 bug

一个data类的例子如下:

from dataclasses import dataclass

@dataclass

class Card:

rank: str

suit: str

card = Card(“Q”, “hearts”)

print(card == card)

True

print(card.rank)

‘Q’

print(card)

Card(rank=‘Q’, suit=‘hearts’)

8、就地变量交换

一个简洁的技巧,可以节省几行代码:

a = 1

b = 2

a, b = b, a

print (a)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值