python 学习语法有感

 原文来自Crossin的编程教室: https://mp.weixin.qq.com/s/efdz4pRVliKASurmLogMIw

1,交换两个变量的写法:

普通:temp = a

           a = b

           b = temp

pythonic: a, b = b, a

2,类似的解包(unpacking)用法还可以实现多个返回值的函数

普通:

def func(a,b):

      result = [b, a]

      return result

r = func(a, b)

x = r[0]

y = r[1]

pythonic的写法:

def func(a, b):

       return b, a

x, y = func(a, b)

3, 读文件,

f = open('filename.txt')

text = f.read()

print(text)

f.close()

pythonic 写法:

with open('filename.txt')

      for line in f:

            print(line)

with的好处是即使出错,也会帮你关闭文件。

4,拼接字符串,普通写法:

letters = ['h', 'e', 'l', 'l', 'o']

s = ''

for l in letters:

     s += l

print(s)

pythonic 写法:

print(''.join(letters))

5, 关于前面遍历列表的例子,如果你想带上索引,可以这么写:

for i, elem in enumerate(lst):

      print(i, elem)

for key, value in dct.items():

      print(key, value)

6, 取出列表中大于0的元素,生成新列表。普通写法:

new_lst = []

for i in lst:

     if i > 0:

           new_list.append(i)

pythonic写法:

new_lst = [i for i in lst if i > 0]

这个被称为“列表解析式”(List comprehension,中文翻译说法有很多),可以说是非常 pythonic 的一个用法了。

更进一步,如果数据量很大,而你对新列表仅仅是遍历操作,并不需要一个列表对象,可以采用生成器

new_lst = (i for i in lst if i > 0)
for i in new_lst:
    print(i)

7、判断一个值是否为True、是否为空列表、是否是None,普通写法:

if x == True:
    pass
if len(y) == 0:
    pass
if z == None:
    pass

pythonic 写法:

if x:
    pass
if not y:
    pass
if z is None:
    pass

8、根据键名获取字典中对应的值,普通写法:

value = dct[key]

这样的问题在于,如果 key 不存在,代码就报错跳出。于是你不得不增加更多的判断。

pythonic 写法:

value = dct.get(key, 0)

改用 get 方法,不存在时会得到 None,或者指定的默认值(这里是 0)。

总之学习之路漫长,多写, 多看, 多搜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值