python第二周day2
python第二周day2(9.23)
1、day6列表作業(yè)更改版
import random # 隨機(jī)操作 # random.randint(0, 100) # **1.創(chuàng)建一個列表,列表中有10個數(shù)字, 保證列表中元素的順序,對列表進(jìn)行排重,并對列表使用進(jìn)行降序排序 nums = [random.randint(95, 100) for _ in range(10)] print('原列表:', nums) # 無序,每次結(jié)果都不一樣 [96, 96, 98, 99, 95, 98, 97, 99, 96, 95] new_nums = [] for x in nums:if x not in new_nums:new_nums.append(x) print('去重后:', new_nums) # 去重后: [96, 98, 99, 95, 97]new_nums.sort(reverse=True) print('排序后:', new_nums) # 排序后: [99, 98, 97, 96, 95] print('排序后:',sorted(new_nums, reverse=True)) # 排序后: [99, 98, 97, 96, 95]# 2.利用列表推導(dǎo)式, 完成以下需求 # a. 生成一個存放1-100中個位數(shù)為3的數(shù)據(jù)列表 # 方法一 nums = [x for x in range(1, 101) if x % 10 == 3] print(nums) # [3, 13, 23, 33, 43, 53, 63, 73, 83, 93] # **方法二 nums = [x for x in range(3, 101, 10)] print(nums) # [3, 13, 23, 33, 43, 53, 63, 73, 83, 93] # nums = [x+3 for x in range(0, 90, 10)] # print(nums) # b. 利用列表推到是將 列表中的整數(shù)提取出來 list1 = [True, 17, "hello", "bye", 98, 34, 21] result = [x for x in list1 if type(x) == int] print(result) # [17, 98, 34, 21] # c.利用列表推導(dǎo)式 存放指定列表中字符串的長度 list1 = ["good", "nice", "see you", "bye"] result = [len(x) for x in list1] print(result) # [4, 4, 7, 3] list1 = [100, "good", "nice", "see you", "bye", 250, True] result = [len(x) for x in list1 if type(x) == str] print(result) # [4, 4, 7, 3] # d. 利用列表推導(dǎo)式刪除列表中整數(shù)個位數(shù)小于5的元素 lists = [24, 'abc', 99, True, 21, 38, 'hello'] # ['abc', 99, True, 38, 'hello'] result = [x for x in lists if not (type(x) == int and x % 10 < 5)] print(result) # ['abc', 99, True, 38, 'hello']# e. **利用列表推導(dǎo)式獲取元素是元組的列表中每個元組的最后一個元素 # x = (10, 20, 30) # print(x[-1]) lists = [(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)] # 先查看需要得到的結(jié)果:[30, 'hello', 3.4, False] result = [x[-1] for x in lists ] print(result) # [30, 'hello', 3.4, False]# 3.已知代碼如下,請回答出各個print的結(jié)果 并說明原因 # https://pythontutor.com/visualize.html#mode=edit 工具位置 nums = [17, 39, 28, 51] nums2 = nums nums2.pop() print(len(nums)) # 這個結(jié)果是什么 請描述原因 # 結(jié)果:3 # 直接賦值,賦值的是地址,nums和nums2指向相同位置的地址,保存相同數(shù)據(jù),所以對nums2改變,nums也會發(fā)生改變 # 補(bǔ)充:is - 是判斷變量的地址是否相同 ,== - 判斷兩個變量對應(yīng)的數(shù)據(jù)是否相同 numlist = [17, 22, 39, 58, [55, 43]] nums3 = numlist.copy() print(numlist is nums3) # 結(jié)果 原因是什么 # 結(jié)果:False # 原因是:對numlist進(jìn)行復(fù)制得到nums3,是保存位置不同但數(shù)據(jù)相同的nums3,所以他們不是相等的,不是一模一樣的。 numlist[-1][0] = 99 # [55, 43][0]--> 55 = 99 --> 99 print(nums3) # num3會不會發(fā)生變化 # 修改列表元素,前拷貝會發(fā)生變化。修改前面的數(shù)據(jù)不變,后面的【55,43】會發(fā)生變化 # 結(jié)果:[17, 22, 39, 58, [99, 43]]""" 語法: 列表[下標(biāo)] 說明: 列表- 是保存列表的變量或者是列表數(shù)據(jù) """ nums = [10,[10, 201],[1, 2, [1, 2]] ] print(nums[-1][2][0]) # 12、元組
1.什么是元組(tuple)
“”"
元組是容器型數(shù)據(jù)類型(序列),將()作為容器的標(biāo)志里面多個元素用逗號隔開:(元素1,元素2,元素3,…)
元組不可變(不支持增刪改,可以支持查);元組是有序的(支持下標(biāo)操作)
元素:任何類型的數(shù)據(jù)
“”"
2.元組就是不可變的列表(元組有序)
列表中除了和增,刪,改相關(guān)操作以外的操作,元組都支持
例如:查,相關(guān)操作(除了增,刪,改相關(guān)的),相關(guān)函數(shù)。元組不可拷貝 copy,元組不可變
3.元組特有或者常用的操作
1)只有一個元素的元組:(元素,)
2)元組在沒有歧義的情況下可以省略()
直接用逗號將多個數(shù)據(jù)隔開,表示的也是一個元組
t2 = (10, 23, 45, 6) print(t2, type(t2)) t2 = 10, 23, 45, 6 print(t2, type(t2)) # (10, 23, 45, 6) <class 'tuple'>3)同時使用多個變量獲取元組的元素(列表也支持)
t2 = ('小明', 18, 90) print(t2[0])a.讓變量的個數(shù)和元組中元素個數(shù)保持一致
name, age, score = t2 print(name, age, score)point = (100, 200) x, y = point # print(x, y, z) # 報錯b.讓變量的個數(shù)小于元組元素的個數(shù),但是必須在某一個變量前加*
先讓不帶的變量按照位置獲取元素,剩下的部分全部保存到帶的變量對應(yīng)的列表中
t3 = ('小明', 18, 90, 170, 80, 76, 89, 90) name, age, height, weight, *scores = t3 x, *y = t3 *x, y = t3*x, y, z = t3 print(x, y, z) # ['小明', 18, 90, 170, 80, 76] 89 90x, y, *z = t3 print(x, y, z) # 小明 18 [90, 170, 80, 76, 89, 90]x, *y, z = t3 print(x, y, z) # 小明 [18, 90, 170, 80, 76, 89] 90t3 = ('小明', 18, 90, 170, 80, 76, 89, 90) x, *y, z, t = t3 print(z) # 89 print(y) # [18, 90, 170, 80, 76]# t4 = ['小明', 18, 90, 170, 80, 76] # x, *y, z = t4 # print(x, y, z) # 小明 [18, 90, 170, 80] 763、字典(重要)
1.什么是字典(dict)
“”"
1)字典是容器型數(shù)據(jù)類型(序列),將{}作為容器的標(biāo)志,里面多個鍵值對(元素)用逗號隔開:{鍵1:值1,鍵2:值2,…}
鍵值對: 鍵:值
2)字典是可變的(支持增刪改);字典是無序的(不支持下標(biāo)操作)
3)元素 - 鍵值對
鍵 - 必須是不可變的數(shù)據(jù),例如:元組,數(shù)字,字符串。鍵是唯一的
值(才是真正想要保存的數(shù)據(jù)) - 沒有要求
“”"
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True1)空字典
dict1 = {} print(dict1, type(dict1)) # {} <class 'dict'>3)鍵是唯一的
dict2 = {'a': 10, 1: 20, 'a': 30} print(dict2) # {'a': 30, 1: 20} # dict3 = {'a': 15, 1: 20, 'b': 90} # print(dict3, type(dict3)) # {'a': 15, 1: 20, 'b': 90} <class 'dict'># 4)4、獲取字典的值
字典的查操作是獲取字典的值
1.查單個
“”"
1)字典[鍵] - 獲取字典中指定鍵對應(yīng)的值;當(dāng)鍵不存在的時候會報錯
2)字典.get(鍵) ==字典.get(鍵,None) - 獲取字典中指定鍵對應(yīng)的值;當(dāng)鍵不存在不會報錯,返回默認(rèn)值None
3)字典.get(鍵,默認(rèn)值) - 獲取字典中指定鍵對應(yīng)的值;當(dāng)鍵不存在不會報錯,返回默認(rèn)值
“”"
2.遍歷
“”"
for 遍歷 in 字典:
循環(huán)體
變量取到的是鍵
“”"
5、字典的增刪改
1.增 - 添加鍵值對
2.改 - 修改鍵對應(yīng)的值
語法: 字典[鍵] = 值 - 當(dāng)鍵存在的時候是修改,鍵不存在就是添加
3.刪
1)del 字典[鍵] - 刪除字典中指定鍵對應(yīng)的鍵值對
goods = {'name': '泡面', 'price': 3.5, 'count': 10} del goods['price'] print(goods) # {'name': '泡面', 'count': 10}2)字典.pop(鍵) - 取出字典中指定鍵對應(yīng)值
goods = {'name': '泡面', 'price': 3.5, 'count': 10} new_goods = goods.pop('price') print(goods) # {'name': '泡面', 'count': 10} print(new_goods) # 3.4總結(jié)
以上是生活随笔為你收集整理的python第二周day2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Nature. Mach. Intel
- 下一篇: 音视频OSD——修改叠加信息的位置