天天看点

python编程一些注意事项

python编程一些注意事项

  • ​​strs & list​​
  • ​​数组逆序​​
  • ​​collections.defaultdict()可以节省很多代码​​

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']}
>>>      
>>> 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']
>>>