虽然用python已经有很长一段时间了,但是从没有系统的学习过,因而知识不成体系。在写代码过程中,不考虑代码的整洁与简单性,导致我写出的程序跑起来很慢,看起来就是菜鸡写的。于是下定决心不定时更新python查漏小知识。
对象的本质是:一个内存块,拥有特定的值。每个对象由id、type、value组成。
a, b = [], []
print(a)
>>> []
a, b = 123, 123
a = b = 123
print(a)
>>> 123
我一般用split()分割字符串较多,但是join()用的比较少。
a = ['www', 'zhihu', 'com']
print('.'.join(a)) # 用点号进行拼接,可以换成其它的符号。
>>> www.zhihu.com
这样就方便很多,我一般用字符串拼接,如果在这个例子中用字符串拼接(字符串相加),还要在list中取到每个值,就麻烦多了。
a = 'link.txt'
a.startswith('li') # >>> True
a.endswith('txt') # >>> True
e.g. 在一个文件夹中有很多文件,可以用这个函数来判断是不是自己想要读取的文件。
print('name: {}, age: {}'.format('xiaoxi', 18))
>>> name: xiaoxi, age: 18
format()前面都是字符串,要填空的地方用{}。
例子:
有很多常用的函数,比如len()、sorted()、max()、sum()、append()等等,这种需要用到哪个就看工具书吧。
一般用一维比较多,二维列表用于存储表格数据。np.array()构成数组
元组我用到的很少,值得注意的点有:
有时候想要将多个列表进行合并,但是又不想把它们放在一个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)) # 结果:
# 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
我一般通过键来获得它对应的值,但这种方法的弊端在于如果你用的键不存在就会报错。而用dict.get()的好处在于,如果键不存在时,会返回None,因此,推荐使用get()获取dict的“值”。
a = {
'name': 'xiaoxi', 'age': 18}
a.get('name')
>>> xiaoxi
a.items()、a.keys() / for key in dict: 遍历所有的key值、a.values()
我经常忘记后面有没有s,不管是读键值对、键还是值都是有的哈。
将新字典b全部添加到旧字典a中,如果key重复,新的会覆盖旧的。
集合是无序可变、元素不重复的数据结构。
创建用{}/set()、添加元素用add()、基于元素不重复这个特点,可以给列表去重。
if-else/ if-elif-else判断语句、for、while等循环语句。
break语句用于while和for循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。
continue语句用于结束本次循环,继续下一次。多个循环嵌套时,continue也是应用于最近的一层循环。