python的查漏小知识(1)

虽然用python已经有很长一段时间了,但是从没有系统的学习过,因而知识不成体系。在写代码过程中,不考虑代码的整洁与简单性,导致我写出的程序跑起来很慢,看起来就是菜鸡写的。于是下定决心不定时更新python查漏小知识。

1. 使用\行连接符

在这里插入图片描述
常见转义字符:\t(横向制表符) \n(换行)。

2. 对象

对象的本质是:一个内存块,拥有特定的值。每个对象由id、type、value组成。

  1. id 对应于对象在计算机内存中的地址,用id(obj)可以返回对象obj的id;
  2. type 表示对象存储的数据类型,比如int、str、list等,使用type(obj)可以返回对象的类型;
  3. value 表示对象所存储的数据值,使用print(obj)可以打印出值。
    在这里插入图片描述

3. python命名规范

在这里插入图片描述

4. 系列数据赋值

  1. 同时给多个变量赋值为空list。左右两边的个数必须保持一致。
a, b = [], []
print(a)     
 >>>   [] 
  1. 链式赋值,下面两种方式都可。
a, b = 123, 123
a = b = 123
print(a)
>>>   123

5. 字符串中的一些常用函数

5.1 split()和join()

我一般用split()分割字符串较多,但是join()用的比较少。

a = ['www', 'zhihu', 'com']
print('.'.join(a))   # 用点号进行拼接,可以换成其它的符号。
>>>   www.zhihu.com

这样就方便很多,我一般用字符串拼接,如果在这个例子中用字符串拼接(字符串相加),还要在list中取到每个值,就麻烦多了。
在这里插入图片描述
感觉自己还是没体会到join()函数,自己用的时候还是会出错,就举个栗子吧。

# 比如我想用形成'九界仙尊is finished.'
bookname = '九界仙尊'
a = bookname.join('is finished.')
# print(a)   # i九界仙尊s九界仙尊 九界仙尊f九界仙尊i九界仙尊n九界仙尊i九界仙尊s九界仙尊h九界仙尊e九界仙尊d九界仙尊.

b = [bookname, 'is finished.']
c = ''.join(b)   # 可以用别的符号
print(c)    # 九界仙尊is finished.

5.2 a.startswith()和a.endswith()

a = 'link.txt'
a.startswith('li')    #  >>>  True
a.endswith('txt')     #  >>>  True

e.g. 在一个文件夹中有很多文件,可以用这个函数来判断是不是自己想要读取的文件。

5.3 format()

print('name: {}, age: {}'.format('xiaoxi', 18))  
>>> name: xiaoxi, age: 18

format()前面都是字符串,要填空的地方用{}。
例子:
在这里插入图片描述

6. 列表

6.1 推导式创建序列

推导式是典型的python风格。
在这里插入图片描述

一条命令,但我经常会添加逗号导致报错。
在这里插入图片描述
字典的推导式:
在这里插入图片描述

6.2 常用的函数

有很多常用的函数,比如len()、sorted()、max()、sum()、append()等等,这种需要用到哪个就看工具书吧。

6.2.1 怎么将list中的元素添加到另一个list中。

之前一直用append()函数,但是如果我要将一个list中的元素添加到另一个list中,还用append()就会有问题。

list1=[1, 2, 3]
list2=['4', 6, 7]

#append()
# list1.append(list2)

#打印现在的list1
# print(list1)    # [1, 2, 3, ['4', 6, 7]]

list1.extend(list2)
print(list1)     # [1, 2, 3, '4', 6, 7]

6.3 二维列表

一般用一维比较多,二维列表用于存储表格数据。np.array()构成数组
在这里插入图片描述

7. 元组

元组我用到的很少,值得注意的点有:

  1. 创建可以用()/tuple();
  2. 元组中元素不能修改;
  3. 元组中元素的访问和列表一样。

7.1 zip()

有时候想要将多个列表进行合并,但是又不想把它们放在一个list里,可以用zip()函数。
在这里插入图片描述
元组可以作为dict的key,但list不行,因为dict中key是唯一的不可变的,但list是可变对象。下面例子用zip()函数形成dict很方便。
在这里插入图片描述
zip()进行打包。

name = ('xi', 'ming')
age = (18, 19)
jobs = ('student', 'coder')
# print(zip(name, age, jobs))         # 结果:<zip object at 0x000001BF04E61248>
# print(dict(zip(name, age, jobs)))   # 结果: ValueError: dictionary update sequence element #0 has length 3; 2 is required
for name, age, jobs in zip(name, age, jobs):
    print(name, age, jobs)      # xi 18 student
    break
# 如果改为list呢
name = ['xi', 'ming']
age = [18, 19]
jobs = ['student', 'coder']
for name, age, jobs in zip(name, age, jobs):
    print(name, age, jobs)      # xi 18 student
    break

8. 字典

8.1 字典的读取

我一般通过键来获得它对应的值,但这种方法的弊端在于如果你用的键不存在就会报错。而用dict.get()的好处在于,如果键不存在时,会返回None,因此,推荐使用get()获取dict的“值”。

a = {'name': 'xiaoxi', 'age': 18}
a.get('name')
>>> xiaoxi

8.2 遍历字典

a.items()、a.keys() / for key in dict: 遍历所有的key值、a.values()
我经常忘记后面有没有s,不管是读键值对、键还是值都是有的哈。

8.3 update()

将新字典b全部添加到旧字典a中,如果key重复,新的会覆盖旧的。
在这里插入图片描述

9. 集合

集合是无序可变、元素不重复的数据结构。
创建用{}/set()、添加元素用add()、基于元素不重复这个特点,可以给列表去重。
集合有个特点是无序,遍历方法和list一样,都用for循环。

10. 控制语句

if-else/ if-elif-else判断语句、for、while等循环语句。

10.1 注意事项

  1. while条件为真时开始循环;
  2. break和continue。

break语句用于while和for循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。

continue语句用于结束本次循环,继续下一次。多个循环嵌套时,continue也是应用于最近的一层循环。

10.2 循环代码优化

  1. 尽量减少循环内部不必要的计算;
  2. 嵌套循环中,金量减少内层循环的计算,尽可能向外提;
  3. 局部变量查询较快,尽量使用局部变量;
  4. 连接多个字符串,用join()而不用’+‘。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值