函數 模塊 列表需注意的幾點

python基礎知識需注意的知識點

函數

  1. round()函數是圓整到最接近的整數,當兩個整數一樣接近時候圓整到偶數。
>>> round(1.5)
2
>>> round(2.5)
2
>>> round(1.3)
1
>>> round(-1.3)
-1
>>> round(-1.3)
-1

模塊

1.cmath和複數

如果要進行復數計算,需要引用cmath庫

>>> import cmath
>>> cmath.sqrt(-1)
1j
>>> import math
>>> math.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

需要注意的是:math庫中和cmath庫中都有sqrt的同名函數,所以在進行庫的引用的時候,儘量使用 import module 的形式,避免使用from module import function

2.str和repr的區別

函數str( )將其轉化成爲適於人閱讀的前端樣式文本,而repr(object)就是原本未處理的用於編譯器閱讀的後臺底層代碼

>>> a 
'hello, world!\n'     #輸出的a本來的模樣 
>>> print(a)      #對a經過編譯後的樣式文本輸出,將轉義字符進行轉義 
hello,world! 
>>> print(str(a))     #可以看到對str返回的值進行print處理,這將與直接print(a)得到相同的結果 
hello,world! 
>>> repr(a)     #獲得的是a原始輸入的存在於存儲器中用於機器底層編譯的代碼 
"'hello, world!\n'" 
>>> print(repr(a))     #對於repr返回的值進行print處理,可以看到這與直接在終端輸入a,得到的是相同的結果 'hello,world!\n'
'hello, world!\n'

3.長字符串和原始字符串

  • 長字符串
    表示和長的字符串可以用三個單引號或三個雙引號
>>> print("""What's your name?
He said "My name is cheng."
haha,hello,cheng.""")
What's your name?
He said "My name is cheng."
haha,hello,cheng.

使用長字符串的好處,可以跨多行,可以隨便使用單引號和雙引號,無須使用反斜槓進行轉義

  • 語句過長需要換行的可以在末尾加上\
>>> print('hello,\
world')
hello,world
>>> 1 + 3 + 5 + 6 + 7\
  +8
30
  • 原始字符串(不以特殊方式處理反斜槓\)
    在字符串前面加上r,該字符串中反斜槓不表示轉義
    字符串結尾不能以\進行結尾,否則會報錯
>>> print('c:\name')
c:
ame
>>> print(r'c:\name')
c:\name
>>> print(r"c:\name")
c:\name
>>> print(r'c:\name\')
      
SyntaxError: EOL while scanning string literal

遇到字符串結尾以\進行結尾的可以這麼處理

>>> print(r'c:\name''\\')
c:\name\
>>> print(r'c:\name'+'\\')
c:\name\

3.編碼和解碼

  • 使用encode 和decode
    python中默認編碼格式是UTF-8
>>> text = '武漢加油!'
>>> text.encode()
b'\xe6\xad\xa6\xe6\xb1\x89\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x81'
>>> b_text = text.encode()
>>> b_text.decode()
'武漢加油!'

也可以使用UTF-32進行編碼

>>> b_text = text.encode('UTF-32')
>>> b_text.decode('UTF-32')
'武漢加油!'
  • 直接創建bytes和str對象(這種方法更通用一些)
>>> text = '武漢加油!'
>>> b_text = bytes(text, encoding='UTF-8')
>>> b_text
b'\xe6\xad\xa6\xe6\xb1\x89\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x81'
>>> str(b_text, encoding='UTF-8')
'武漢加油!'
  • bytearray(bytes的可變版本)
    可以替換數據流中的字符,要插入字符必須使用ord獲取其序數值
>>> str(b_text, encoding='UTF-8')
'武漢加油!'
>>> x = bytearray(b_text)
>>> x
bytearray(b'\xe6\xad\xa6\xe6\xb1\x89\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x81')
>>> x[0] = ord(b'c')
>>> x
bytearray(b'c\xad\xa6\xe6\xb1\x89\xe5\x8a\xa0\xe6\xb2\xb9\xef\xbc\x81')  # 將第一個編碼變爲了c

列表

1.給切片賦值

在不替換原有元素的情況下插入新元素

>>> ls = [1, 2, 3, 4, 5, 6]
>>>> ls[1:1] = 'c'
>>> ls
[1, 'c', 2, 3, 4, 5, 6]

使用切片賦值刪除切片

>>> numbers = [1, 2, 3, 4, 5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]

2.列表方法

  • append
    將一個對象附加到列表末尾,直接修改舊列表
>>> lst = [1, 2, 3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

>>> lst = [1, 2, 3]
>>> lst.append([1, 2])
>>> lst
[1, 2, 3, [1, 2]]```

- clear
**就地**清空列表的內容

```python
>>> lst
[1, 2, 3, 4]
>>> lst.clear()
>>> lst
[]
  • copy
    複製列表,建立副本
    普通複製只是將另外一個名稱關聯到表
>>> lst = [1, 2]
>>> ls = lst
>>> ls[1] = 3
>>> lst
[1, 3]
>>> lst = [1, 2]
>>> ls = lst.copy()
>>> ls[1] = 3
>>> lst
[1, 2]
  • count
    計算指定的元素在列表中出現了多少次
>>> ls = [1, 2, 3, 5, [1, 2, 3]]
>>> ls.count(1)
1
>>> ls.count([1, 2, 3])
1
>>> 
  • extend
    同時將多個值附加到列表末尾
    注意append和extend的區別
>>> lst = [1, 2, 3]
>>> lst.append([1, 2])
>>> lst
[1, 2, 3, [1, 2]]
>>> lst = [1, 2, 3]
>>> lst.extend([1, 2])
>>> lst
[1, 2, 3, 1, 2]
  • index
    在列表中查找指定值第一次出現的索引
    搜索不到會出現異常
>>> a
['h', 'e', 'l', 'l', 'o']
>>> a.index('l')
2
>>> a.index(1)
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    a.index(1)
ValueError: 1 is not in list
>>> 
  • insert
    將一個對象插入列表
>>> a
['h', 'e', 'l', 'l', 'o']
>>> a.insert(2, 'a')
>>> a
['h', 'e', 'a', 'l', 'l', 'o']
>>> a.insert(2, [1, 2])
>>> a
['h', 'e', [1, 2], 'a', 'l', 'l', 'o']
  • pop 從列表中刪除一個元素,並返回這個元素
    默認刪除最後一個元素
    pop可以實現一種常見的數據結構–棧
>>> a
['h', 'e', [1, 2], 'a', 'l', 'l', 'o']
>>> a.pop()
'o'
>>> a
['h', 'e', [1, 2], 'a', 'l', 'l']
>>> a.pop(2)
[1, 2]
>>> a
['h', 'e', 'a', 'l', 'l']
  • remove刪除第一個爲指定值的元素
    找不到要刪除的值會報錯
>>> a
['h', 'e', 'a', 'l', 'l']
>>> a.remove('a')
>>> a
['h', 'e', 'l', 'l']
>>> a.remove('b')
Traceback (most recent call last):
  File "<pyshell#59>", line 1, in <module>
    a.remove('b')
ValueError: list.remove(x): x not in list
  • reverse按相反順序排列的列表元素
    修改列表但不返回任何值
    reversed函數返回一個迭代器
>>> a
['h', 'e', 'l', 'l']
>>> a.reverse()
>>> a
['l', 'l', 'e', 'h']
  • sort對列表就地排序
    sort排序會對原列表進行修改
>>> a
['l', 'l', 'e', 'h']
>>> a.sort()
>>> a
['e', 'h', 'l', 'l']

不改變原來的序列排序

>>> b = [5, 1, 4, 3, 2]
>>> c = b.copy()
>>> c.sort()
>>> c
[1, 2, 3, 4, 5]
>>> b
[5, 1, 4, 3, 2]

獲取排序後的列表副本,使用sorted()函數

>>> b
[5, 1, 4, 3, 2]
>>> d = sorted(b)
>>> d
[1, 2, 3, 4, 5]
  • sort高級排序
    sort方法有兩個參數(key,reverse)
    reverse=True是倒序
>>> ls
['p', 'y', 't', 'h', 'o', 'n']
>>> ls.sort(reverse=True)
>>> ls
['y', 't', 'p', 'o', 'n', 'h']

key=len表示用長度排序

>>> text = ['abcd', 'aa', 'abc']
>>> text.sort(key=len)
>>> text
['aa', 'abc', 'abcd']

3.元組:不可修改的序列

元組的創建:值用逗號分隔

>>> 3 * (4 + 3)
21
>>> 3 * (4 + 3),
(21,)
>>> 3 * (4 + 3,)
(7, 7, 7)
>>> 1,
(1,)
>>> 1, 2, 3
(1, 2, 3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章