天天看點

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