欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python编程一些注意事项

程序员文章站 2022-04-01 20:37:41
...

strs & list

  • list有sort函数,是in place型的排序,但是strs没有sort函数,但是也可以对其排序,使用sorted()函数,排序方式是按照字母的ascii码。举个栗子:
>>> a=[5,3,6,2,1]
>>> a.sort()  # 注意这个是in place替换
>>> a
[1, 2, 3, 5, 6]
>>> 
# 如果想不是in place替换,怎么做呢?使用sorted()函数就可以了
>>> a=[5,3,6,2,1]
>>> a
[5, 3, 6, 2, 1]
>>> sorted(a)
[1, 2, 3, 5, 6]
>>> a
[5, 3, 6, 2, 1]
>>> 

再来看一下strs,list.sort()是list的成员函数,不能将其用于strs的排序,但是sorted()函数对所有可迭代的对象进行排序操作。所以使用sorted()排序就好了。

>>> a="hello python"
>>> sorted(a)
[' ', 'e', 'h', 'h', 'l', 'l', 'n', 'o', 'o', 'p', 't', 'y']
>>> 
# 如果想转换成list
>>> b=sorted(a)
>>> b
[' ', 'e', 'h', 'h', 'l', 'l', 'n', 'o', 'o', 'p', 't', 'y']
>>> c="".join(b)
>>> c
' ehhllnoopty'
>>> 

数组逆序

  • Python中有一个非常好用的方法,可以直接对一个数组进行逆序,
>>> a=[5,4,2]
>>> a[::-1]
[2, 4, 5]
>>> 

collections.defaultdict()可以节省很多代码

看个例子:

>>> a=dict()
>>> a['1'].append('nihao')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '1'
>>> if '1' in a:
...     a['1'].append('nihao')
... else:
...     a['1']=['nihao']
... 
>>> a
{'1': ['nihao']}
>>> 

如果我们想往一个字典中的键中加入一个list,并在list中新增数据,直接append会报错,需要使用这个if语句判断是否这个键在字典中,而使用defaultdict可以怎么做呢?

>>> import collections
>>> a=collections.defaultdict(list)
>>> a
defaultdict(<class 'list'>, {})
>>> a['1'].append('nihao')
>>> a
defaultdict(<class 'list'>, {'1': ['nihao']})
>>> list(a.values())
[['nihao']]
>>> list(a)
['1']
>>> 

我们直接指定defaultdict为list,这样就可以直接append了,不用管这个键是否在a这个dict中,如果不在,defaultdict会自动创建一个list。