生成器+三元表達式+內置函數 做業

1.什麼是生成器?

(yield)生成器是自定義的迭代器,本質就是迭代器python

生成器必須在函數體內定義,而且生成器直接調用不會執行函數體內代碼編程

經過__next__()取值纔會執行函數體內代碼,而且yield會返回一次值,一次一個值(能夠返回屢次)。函數

2.請用本身認爲通俗易懂的話簡述面向過程編程思想,並列舉優缺點。

面向過程編程思想相似於工廠流水線,即先作什麼後作什麼。code

優勢:複雜的問題流程化,簡單化索引

缺點:可擴展性差資源

3.列表生成式與生成器表達式(生成器生成式)的區別?

列表生成式可依賴索引取值,方便,可是耗費資源generator

生成器表達式沒有索引取值,取值不方便,可是節省資源it

4.寫出如下程序的輸出結果1

res1 = (i for i in range(10) if i % 2 == 0)
print(res1)  # 此處寫答案--> 生成器表達式取餘隱藏了0,2,4,6,8;
顯示<generator object <genexpr> at 0x000001E75DCC0DB0>

res2 = [i + 2 for i in res1]
print(res2)  # 此處寫答案--> 2 4 6 8 10

res3 = sorted(res2, reverse=True)
print(res3)  # 此處寫答案--> 10 8 6 4 2 0

5.寫出如下程序的輸出結果2

a = [2, 5]
b = [a] * 4
print(b)  # 此處寫答案-- >[[2, 5],[2, 5],[2, 5],[2, 5]]
b = tuple(b)
b[0][0] = 3
print(b)  # 此處寫答案, 請簡述答案爲什麼是這個結果-->([3, 5], [3, 5], [3, 5], [3, 5])
由於這裏的b是元組套列表,b後面的第一個0表明元組索引,第二個表明列表索引,由於元組是不可變類型,列表是可變類型;因此列表裏面索引爲0的都修改爲3

6.寫出一下程序的輸出結果3

print([i % 2 for i in range(10)])  # 此處寫答案--> [0,1,0,1,0,1,0,1]
print((i % 2 for i in range(10)))  # 此處寫答案--> 別看了,生成器不會給你顯示的

7.從0-99這100個數中隨機取出10個,要求不能重複,使用列表生成式。

print([x * x for x in range(1, 11)])

8.請寫出匿名函數 lambda表達式的語法格式以及使用方式?

key = lambda 參數 : 返回值
print(key(參數))
和內置函數一塊兒用

9.請用兩種方式獲取list1中最大值與最小值。

list1 = [100, 200, 300, 400, 500, 600, 700]
print(min(list1))
print(max(lsit1))
print(max(sorted(list1,reverse=True)))
print(min(sorted(list1,reverse=True)))
print(max(list1,key=lambda x:x))
print(min(list1,key=lambda x:x))

10.請使用兩種方式獲取user_dic字典中薪資最高的員工。

user_dic = {
    '張全蛋': 20000,
    '趙鐵柱': 3000,
    '李小花': 8000,
    '伍六七': 1500
}
print(max(user_dic,key=lambda x:user_dic[x]))

選作題

1.一行代碼實現 9*9 乘法表
2.繼續編寫ATM加購物車class

相關文章
相關標籤/搜索