python語言篇(6知識點)

2021-09-13 02:05:55 字數 4792 閱讀 8466

字典的成員資格判斷 in / not in 運算子

用 in 運算子可以判斷乙個鍵是否存在於字典中,如果存在則返回true,否則返回false

not in 返回值與 in 相反

示例:d =

1 in d      # true

2 in d      # true

2 not in d  # false

8 not in d  # true

8 in d      # false

'一' in d   # false

列表的 in 運算子和字典的 in 運算子比較:

1. 列表的in運算子計算時間會因列表中元素個數的增加而增加

l = [3,7,0,1,4,5,6....... 10976]  # 大約有十萬個

if 888 in l:

print("888在列表裡")  # 慢

2. 字典的in運算子計算時間不會因鍵值對的個數增加而增加,操作速度快於列表

d =

if 888 in d:

print("888在字典的鍵裡")  # 快

字典的迭代訪問:

容器是可迭代物件,字典只能對鍵進行迭代訪問

d =

for k in d:

print(k)

可以用於字典的內建(built-in)函式:

len(x)  返回字典的鍵值對的個數

max(x)  返回字典的鍵的最大值

min(x)  返回字典的鍵的最小值

sum(x)  返回字典的所有鍵的和

any(x)  對所有鍵進行真值測試,有乙個為true結果為true

all(x)  對所有鍵進行真值測試,所有為true才為true

字典的方法:

見:>>> help(dict)

或file: python_base_docs_html/dict_***x.html 

練習:輸入乙個字串代表星期幾(0~6), "0"/'日'代表週日,'1'/'一' 代表周一.

'2'/'二' 代表周二.......... '6'/'六' 代表 週六

任意輸入字串,列印這個字串是否代表星期幾,如果不是以上字元列印"字典內沒有相應的資料"

(要求將以上資料存於字典中, 鍵為字串:'0123456日一二三...六'中的乙個,值為星期幾或週幾) 

d =

字典推導式:

作用:用可迭代物件生成字典

語法:注: 的內容代表可省略

示例:# 生成乙個字典,鍵為10以內的數字,值為鍵的平方

d =

練習:1. 有字串列表如下:

l = ["tarena", 'xiaozhang', 'hello']

用推導式生成如下字典:

d =

注: 字典的值為鍵的長度

2. 有兩個列表:

no = [1001, 1002, 1003, 1004]

names = ['tom', 'jerry', 'spike', 'tyke']

用no中的編碼為作為鍵,以names中的字串作為值,生成相應的字典

提示 : range(4)來生成索引

字典推導式的巢狀:

語法同列表推導式巢狀

字典 vs 列表

1. 都是可變物件

2. 索引方式不同, 列表用整數索引,字典用鍵索引

3. 字典的查詢速度可能會快於列表(重要)

4. 列表的儲存是有序的,字典的儲存是無序的

集合 set

集合是可變的容器

集合內的資料物件都是唯一的(不能重複多次的)

集合是無序的儲存結構,集合中的資料沒有先後順序關係

集合內的元素必須是不可變物件

集合是可迭代物件

集合是相當於只有鍵沒有值的字典(鍵則是集合的資料)

建立空的集合:

set()

建立非空的集合:

s =

集合的建構函式 set

set()  建立乙個空的集合物件(不能用{}來建立空集合)

set(iterable)  用可迭代物件建立乙個新的集合物件

示例:s = set()  # s 為空集合

s =

s = set("abc")  # s =

s = set() # s =

s = set(range(1:10:3))  # s =

集合的運算:

交集, 並集,補集,子集,超集

運算子:

& | - ^ < <= > >= == !=

in / not in

& 生成兩個集合的交集

s1 =

s2 =

s1 & s2   #

| 生成兩個集合的並集

s1 =

s2 =

s1 | s2   #

- 生成兩個集合的補集

s1 =

s2 =

s1 - s2   # #生成屬性s1但不屬於s2的所有元素的集合

^ 生成兩個集合的對稱補集

s1 =

s2 =

s1 ^ s2  #

> 判斷乙個集合是另乙個集合的超集

< 判斷乙個集合是別乙個集合的子集

>  # true

>  # true

<  # true

== / != 集合相同和不同

==  # true

!=  # true

in / not in 運算子

in 等同於字典的in, 用於集合中,當某個值存在於集合中,返回true,否則返回false

not in 與 in 返回值相反

集合的 in / not in 運算子的速度快於序列

能用於集合的函式:

len(x)

max(x)

min(x)

sum(x)

any(x)

all(x)

集合是可迭代物件

集合練習:

經理有: 曹操,劉備,周瑜

技術員有: 曹操,周瑜,張飛,趙雲

用集合求:

1. 即是經理也是技術員的有誰?

2. 是經理,但不是技術員的有誰?

3. 是技術人員,但不是經理的都有誰?

4. 張飛是經理嗎?

5. 身兼一職的人都有誰?

6. 經理和技術員共有幾個人?

python3 集合中的常用方法:

見:>>> help(set)

或:python_base_docs_html/set_????.html

集合推導式 

集合推導式是用可迭代物件生成集合的表示式

語法:注: 內的內容可省略

示例:numbers = (1,2,3,2,2,3,3,4,5)

s =  # 去除重複的元素

固定集合 frozenset

固定集合是不可變的,無序的,含有不重複元素的集合

作用:固定集合可以作為字典的鍵,還可以作為集合的值

建立空的固定集合

fs = frozenset()

建立非空的固定集合:

frozenset(iterable)  用可迭代物件建立新的固定集合

示例:fz = frozenset([2,3,5,7]) # frozenset()

運算:& 交集

| 並集

- 補集

^ 對稱補集

in /not in 運算

< <= > >= == !=

(以上運算 與 set 的運算完全相同)

固定集合的方法:

相當於集合的全部方法(去掉修改集合的方法)

列表 ,字典,集合物件優缺點:

1. 都為可變

2. 列表的尾部插入速度比較快,查中間插入和頭插資料速度慢

3. 列表有序

4. 字典新增,刪除,修改速度快於列表

5. 集合的新增,刪除快於列表,且不能儲存重複元素

練習:1. 輸入一段字串,列印所有輸入過的字串,但重複的只列印一次,(不要求列印的順序與輸入順序一致)

輸入: abcdabcaba

列印:a b c d

2. 輸入一段字串,列印出這個字串**現過的字元及出現過的次數:

如:輸入:abcdabcaba

列印如下:

a: 4次

b: 3次

d: 1次

c: 2次

注: 不要求列印順序    

練習:1. 有乙隻小猴子,摘了很多桃.

第一天吃了全部桃子的一半,感覺不飽又吃了乙個

第二天吃了剩下桃子的一半,感覺不飽又吃了乙個

.... 以此類推

到第十天,發現只剩下乙個了

請問第一天摘了多少個桃?

2. 完全數

1 + 2 + 3 = 6 (6為完全數)  

1, 2, 3都為6的因數(能被乙個數x整除的數為y,則y為x的因數)

1 x 6 = 6

2 x 3 = 6

完全數是指除自身以外的所有的因數之和相加等於自身的數

求 4 ~ 5個完全數,並列印出來

答案:6

28496

8128

3. 任意輸入乙個數n代表三角形的高度, 列印此形將的三角形

如:請輸入:4

列印如下:

1121

12321

1234321

4. 將第三題列印三角形變為列印稜形  

1121

12321

1234321

12321

1211

python語言篇(8知識點)

函式變數 函式名是變數,它在建立時繫結乙個函式 示例 def f1 lst print f1函式被呼叫 f1 f1 none f1 出錯,f1 繫結的是none 示例 def f1 print hello def f2 print world f1,f2 f2,f1 f1 world 乙個函式可以作...

C語言知識點 6 陣列

1 一維陣列的初始化 inta 5 合法 inta 5 合法 inta 合法,常考,後面決定前面的大小!inta 5 不合法,賦值的個數多餘陣列的個數了 2 一維陣列的定義 int a 5 注意這個地方有乙個重要考點,定義時陣列的個數不是變數一定是常量。int a 5 合法,最正常的陣列 int a...

Python知識點總結篇(二)

cat fat black loud size,color,disposition cat 複製 sort 和sorted 方法的比較 sort key none,reverse false 就地改變列表,sorted iterable,key none,reverse false 返回新的列表,對...