1. 程式人生 > >python3學習筆記(一)——數字、字符串、列表、字典、元組

python3學習筆記(一)——數字、字符串、列表、字典、元組

類型 單詞 nbsp 3.1 true expand 替換 割點 gpo

什麽是python解釋器?

  python代碼在解釋器中運行。解釋器是代碼與計算機硬件之間的軟件邏輯層。

python的執行過程

源代碼(.py文件) --> 編譯 --> 字節碼(.pyc文件) --> python虛擬機解釋字節碼-->執行

python的主要實現方式:CPython、JPython(Java)、IronPython(Windows)

表達式建立並處理對象-->表達式構成語句-->語句組成模塊-->模塊組成程序

Python核心數據類型:
數字


字符串
列表
字典
元組
集合
文件
None、布爾型
函數、模塊、類

一、數字

1.加減乘除

>>> 3+5
8
>>> 3-5
-2
>>> 3*5
15
>>> 5/3
1.6666666666666667
>>> 5.0/3
1.6666666666666667
>>> 5//3
1
>>> 5.0//3
1.0
>>> -5//3
-2
>>> -7//3 # 向下取舍
-3
>>> 23 % 10
3
>>> 3**2
9

2.內置函數

>>> int(3.14)
3
>>> float(3)
3.0

3.內置數學模塊

>>> import math
>>> math.pi
3.141592653589793
>>>import random

二、字符串

字符串的特點:
  1.字符串是單個字符的字符串序列,是有序的
  2.不可變性,不可以對原始的字符串進行改變。
字符串操作:
>>> s = ‘hello world‘
1.計算字符串的長度

>>> len(s)
11


2.索引

>>> s[0]
h
>>> s[6]
w
>>> s[-1]
d
>>> s[-2]
l

3.切片

>>> s[:]
hello world
>>> s[0:4]    # [a,b)
hell
>>> s[2:4]
ll
>>> s[-5:-1]
worl
>>> s[-5:]
world

4.字符串拼接

>>> s1 = hello 
>>> s2 = world
>>> s1 + s2
hello world

5.字符串的方法
5.1.字符串大小寫轉換

>>> # 字符串首字符大寫
... print("hello world".capitalize())
Hello worldprint("hello WORLD".swapcase())
>>> # 將字符串變為標題
... print("hello WORLD".title())
Hello World
>>> # 將字符串轉為大寫
... print("hello world".upper())
HELLO WORLD
>>> # 把字符串轉為小寫
... print("HELLO WORLD".lower())
hello world
>>> # 翻轉字符串中的大小寫
... print("hello WORLD".swapcase())
HELLO world

5.2.字符串分割

>>> # 以某個元素為分割點,將字符串分為3部分,從左往右找到的第一個元素為分割點
... print(helloworld.partition(o))
(hell, o, world)
>>> # 以某個元素為分割點,將字符串分為3部分,從右往左找到的第一個元素為分割點
... print(helloworld.rpartition(o))
(hellow, o, rld)
>>> # 替換原字符串中的元素,默認全部替換,可以指定替換幾個(從左往右數)
... print("hello world".replace(o, a, 1))
hella world
>>> # 以某個元素為分割點,將字符串分割,從左往右分割n次
... print("hello world".split(o, 1))
[hell,  world]
>>> # 以某個元素為分割點,將字符串分割,從右往左分割n次
... print("hello world".rsplit(o, 1))
[hello w, rld]
>>> # 按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。
... print(hello\nworld.splitlines(True))
[hello\n, world]

5.3.字符串中查找元素

>>> # 統計某個字符串從索引n到y出現的次數,缺省為在整個字符串中查找
... print("hello world".count(o, 7, 10))
1
>>> # 在索引[n , y)之間查找元素,缺省為[:]返回元素的索引,如果沒找到返回-1
... print("hello world".find(e))
1
>>> print("hello world".find(o, 0, 2))
-1
>>> # 在[n, y)之間找元素的索引值,沒找到會報錯
... print("hello world".index(o))
4
>>> print("hello world".index(e, 0, 5))
1

5.4.字符串判斷

>>> # 判斷字符串是否以某個元素開始
... print(helloworld.startswith(h))
True
>>> # 判斷字符串的的從[n,y)的索引之間是否以某個字符結尾,返回值為布爾值
... print("hello world".endswith(e, 0, 2))
True
>>> # 判斷是否是只有數字或字母
... print(abc123.isalnum())
True
>>> # 判斷是否只含有字母
... print(abc.isalpha())
True
>>> # 判斷字母是否都是小寫
... print("Hello".islower())
False
>>> # 判斷字符是不是空格
... print(" ".isspace())
True
>>> # 判斷是不是字符串是不是標題(單詞首字母是不是大寫)
... print("Hello World".istitle())
True

5.5字符串格式化

>>> # 字符串居中,規定字符串的總長度,不夠用其他字符補齊,默認是空格
... print("hello world".center(20, "#"))
####hello world#####
>>> # 把字符串中的\t替換為n個空格
... print("hello\tworld".expandtabs(tabsize=20))
hello               world
>>> print(#.join("hello world"))
h#e#l#l#o# #w#o#r#l#d
>>> # 規定輸出字符的長度,並且左對齊,不足部分用指定字符補齊
... print("hello world".ljust(20, "#"))
hello world#########
>>> # 規定輸出字符的長度,並且右對齊,不足部分用指定字符補齊
... print("hello world".rjust(20, "#"))
#########hello world
>>> # 去除字符串左邊的的空格
... print( hello.lstrip())
hello
>>> # 去除字符串右邊的的空格
... print(hello .rstrip())
hello
>>> # 去除字符串兩邊的的空格
... print( hello .strip())
hello
>>> # 指定字符串的長度,不夠在前面補0
... print("123".zfill(5))
00123
>>> # 字符串的拼接
... print(hello  + world)
hello world
>>> print(hello  * 3)
hello hello hello

6字符串的賦值

>>> s = hello world        
>>> print(s)
hello world
>>> s = "hello world"
>>> print(s)
hello world
>>> s = """hello
... world
... !!!"""
>>> print(s)
hello
world
!!!
>>> s = hello\tworld
>>> print(s)
hello   world
>>> s = rhello\tworld
>>> print(s)           
hello\tworld


三、列 表
列表的特點:
  1.任意類型的對象的位置相關的有序集合
  2.大小可變,可以修改
  3.支持任意嵌套
1.計算列表長度

>>> l = [Tom,Bob,123,[boy,girl]]
>>> len(l)
4

2.索引

>>> l[-1]
[boy, girl]
>>> l[2] 
123
>>> l[3][1]
girl

3.切片

>>> l[:]
[Tom, Bob, 123, [boy, girl]]
>>> l[1:3]
[Bob, 123]
>>> l[-2:-1]
[123]
>>> l[-2:]
[123, [boy, girl]]

4.列表的方法

4.1添加

#在尾部插入一項
>>> l = [劉備,關羽,張飛]
>>> l.append(諸葛亮)
>>> l
[劉備, 關羽, 張飛, 諸葛亮]
#把一個列表添加到另一個列表末尾
>>> L1 = [劉備,關羽,張飛] 
>>> L2 = [姜維,諸葛亮] 
>>> L1.extend(L2) 
>>> L1
[劉備, 關羽, 張飛, 姜維, 諸葛亮]
#在指定索引位置插入元素
>>> l
[劉備, 關羽, 張飛]
>>> l.insert(1,馬超)
>>> l
[劉備, 馬超, 關羽, 張飛]

4.2刪除

#刪除所有元素
>>> l.clear()
>>> l
[]
#根據索引刪除元素並打印刪除的元素
>>> l
[劉備, 馬超, 關羽, 張飛]
>>> l.pop()    #無參數刪除最後一個
張飛
>>> l
[劉備, 馬超, 關羽]
>>> l.pop(1)
馬超
>>> l
[劉備, 關羽]
#刪除指定元素
>>> l = [劉備,關羽,張飛]
>>> l.remove("關羽")
>>> l
[劉備, 張飛]

4.3拷貝

>>> l1 = l.copy()
>>> l1
[劉備, 關羽, 張飛]
4.4查找
#統計某個元素出現的次數
>>> l.count(關羽) 
1
#查找[a,b)之間某元素的索引值
>>> L1
[劉備, 關羽, 張飛, 姜維, 諸葛亮]
>>> L1.index(關羽)
1
>>> L1.index(關羽,2,4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 關羽 is not in list

4.5排序

# 倒序
>>> l = [b,B,a,h] 
>>> l.reverse()
>>> l
[h, a, B, b]
# 升序
>>> l.sort() 
>>> l
[B, a, b, h]
降序
>>> l.sort(reverse = True)
>>> l
[h, b, a, B]

5.列表解析

>>> row = [[1,2,3],[4,5,6],[7,8,9]] 
>>> row
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> col = [i[1] for i in row ] 
>>> col
[2, 5, 8]
>>> [i[1]+1 for i in row]
[3, 6, 9]
>>> [i[1] for i in row if i[1] % 2 == 0]
[2, 8]

四、字典

字典的特點:
  1.通過鍵來存儲
  2.沒有固定的從左到右的順序
  3.可以改變
1.字典的創建

>>> d = {name:Tom,job:IT}
>>> d
{job: IT, name: Tom}
>>> d[age] = 18
>>> d[sex] = boy
>>> d
{job: IT, sex: boy, name: Tom, age: 18}

2.索引

>>> d = {name:Tom,job:IT} 
>>> d
{name: Tom, job: IT}
>>> d[name]
Tom

3.鍵的排序

>>> d.keys()
dict_keys([name, job])
>>> list(d.keys())
[name, job]
>>> Ks = list(d.keys())
>>> Ks.sort()
>>> for k in Ks: 
... print(k,-->,d[k])
... 
job --> IT
name --> Tom

4.判斷

>>> d
{name: Tom, job: IT}
# 判斷一個鍵是否存在
>>> name in d
True

5.字典的方法

5.1刪除

# 清空字典
>>> d = {name: Tom, job: IT}
>>> d.clear()
>>> d
{}

#刪除指定鍵
>>> d.pop(sex,not find)
not find
>>> d.pop(name) 
Tom
#隨機刪除鍵值對,字典為空時報錯
>>> d.popitem()
(job, IT)
>>> d.popitem()
(name, Tom)
>>> 
>>> d.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: popitem(): dictionary is empty

5.2拷貝

>>> d = {name: Tom, job: IT}
>>> D = d.copy()
>>> D
{name: Tom, job: IT}

5.3創建字典

>>> l
[name, age]
>>> 
>>> d={}
>>> d.fromkeys(l,abc)
{age: abc, name: abc}
# 如果鍵不存在添加一個,如果存在不做更改
>>> d.setdefault(sex,boy) 
boy
>>> d
{job: IT, sex: boy, name: Tom}
>>> d.setdefault(sex,girl)
boy
>>> d
{job: IT, sex: boy, name: Tom}
#合並字典,把一個字典加到另一個字典
>>> d1 = {name: Tom, job: IT}
>>> d2 = {sex:boy}
>>> d1.update(d2)
>>> d1
{job: IT, sex: boy, name: Tom}

5.4查找

# 根據鍵查找值
>>> d = {name: Tom, job: IT}
>>> d.get(name)
Tom
>>> d.get(sex,not find) 
not find
5.5
>>> d.items()
dict_items([(job, IT), (name, Tom)])
>>> for k,v in d.items(): 
... print(k,v)
... 
job IT
name Tom
>>> for k in d.items(): 
... print(k)
... 
(job, IT)
(name, Tom)

五、元組

元組的特點:
  1.不可變性
  2.支持嵌套
>>> t = (1,2)
1.計算元組的長度

>>> len(t)
2

2.元組的方法:

>>> t.count(1)
1
>>> t.index(1)
0

python3學習筆記(一)——數字、字符串、列表、字典、元組