day07 列表和字典作業

2021-10-17 20:35:39 字數 4257 閱讀 4137

1.建立乙個列表,列表中有10個資料, 保證列表中元素的順序,對列表進行排重,並對列表使用進行降序排序

例如:隨機生成了[70,

88,91,

70,107,

234,91,

177,

282,

197]--

- 去重之後 [70,

88,91,

107,

234,

177,

282,

197]--

-- 降序排序 [

282,

234,

197,

177,

107,91,

88,70]

import random

list1=

for x in

range(10

):1,

1000))

print

(list1)

for _ in

range

(len

(list1)):

x=list1.pop(

)if x not

in list1:

list1.insert(

0,x)

list1.sort(reverse=

true

)print

(list1)

2.利用列表推導式, 完成以下需求

a. 生成乙個存放1-100中個·位數為3的資料列表

結果為 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
list2=

[x for x in

range(3

,100,10

)]print

(list2)

b. 利用列表推將列表中的整數提取出來

例如:[

true,17

,"hello"

,"bye",98

,34,21

]---

[17,98

,34,21

]

list3=

[true,17

,"hello"

,"bye",98

,34,21

]list4=

[x for x in list3 if

type

(x)==

int]

print

(list4)

c.利用列表推導式 存放指定列表中字串的長度

例如 [

"good"

,"nice"

,"see you"

,"bye"]-

--[4

,4,7

,3]

list5=

["good"

,"nice"

,"see you"

,"bye"

]list6=

[len

(x)for x in list5]

print

(list6)

3.已知**如下,請回答出各個print的結果 並說明原因

nums =[17

,39,28

,51]nums2 = nums

nums2.pop(

)print

(len

(nums)

)# 這個結果是什麼 請描述原因

"""

3,因為nums賦值給nums2的是列表的位址,nums和nums2指向同乙個位址上的列表

對nums2,操作,也就是對nums操作

"""numlist =[17

,22,39

,58,[

55,43]

]nums3 = numlist.cop

print

(numlist is nums3)

# 結果 原因是什麼

"""false 因為copy是在記憶體裡開闢了乙個新的空間,存放numlist一模一樣的列表num3

兩個列表相等,但是位址不同,代表著兩個列表,而is是判斷是否是同乙個列表

"""numlist[-1

][0]

=99print

(nums3)

# num3會不會發生變化

"""會,numlist裡的子列表是存的位址,copy過去的也是位址

numlist改變,nums3也改變

"""

4.定義乙個列表,在列表中儲存6個學生的資訊(學生資訊中包括: 姓名、年齡、成績(單科)、**、性別(男、女、不明) )

a.統計不及格學生的個數

​ b.列印不及格學生的名字和對應的成績

​ c.統計未成年學生的個數

​ d.列印手機尾號是8的學生的名字

​ e.列印最高分和對應的學生的名字

​ f.刪除性別不明的所有學生

​ g.將列表按學生成績從大到小排序(掙扎一下,不行就放棄)

students =[,

,,,,

,]# a.統計不及格學生的個數

list7 =

[x['score'

]for x in students if x[

'score'

]<60]

print

(len

(list7)

)# b.列印不及格學生的名字和對應的成績

for x in students:

if x[

'score'

]<60:

print

(x['name'

], x[

'score'])

# c.統計未成年學生的個數

list8 =

[x['age'

]for x in students if x[

'age'

]<18]

print

(len

(list8)

)# d.列印手機尾號是8的學生的名字

list9 =

[x['name'

]for x in students if

list

(x['tel'])

[-1]

=='8'

]print

(list9)

# e.列印最高分和對應的學生的名字

# 方法-:

max_socre =

max(x[

'score'

]for x in students)

names =

[x['name'

]for x in students if x[

'score'

]== max_socre]

print

(names)

# 方法二:

result =

max(students,key =

lambda x:x[

'name'])

# f.刪除性別不明的所有學生

for x in students:

if x[

'gender']==

'不明'

: students.remove(x)

print

(students)

# 此方法可行----才怪!!!!remove之後列表改變,刪掉第乙個

# 第二次迴圈從原列表的第三個繼續迴圈。也就是說遍歷拿不到所有元素

# 解決方法,copy乙個,備份,遍歷備份,刪原來的

#來看用篩選推導式做

list10=

[x for x in students if x[

'gender']!=

'不明'

]print

(list10)

#g.將列表按學生成績從大到小排序(掙扎一下,不行就放棄)

# 不裝了,俺會高階函式,演算法不管了,直接一句真言

new_students =

sorted

(students,key=

lambda x:x[

'age'

],reverse=

true

)print

(new_students)

day7 列表和字典作業

1.建立乙個列表,列表中有10個舒宗,保證列表中元素的順序,對列表進行排重,並對列表使用進行降序排序 例如 隨機生成了 70,88,91,70,107,234,91,177,282,197 去重之後 70,88,91,107,234,177,282,197 降序排序 282,234,197,177,...

day7 列表和字典作業

1.建立乙個列表,列表中有10個元素,保證列表中元素的順序,對列表進行排重,並對列表使用進行降序排序 例如 隨機生成了 70,88,91,70,107,234,91,177,282,197 去重之後 70,88,91,107,234,177,282,197 降序排序 282,234,197,177,...

day7 列表和字典作業

1.建立乙個列表,列表中有10個資料,保證列表中元素的順序,對列表進行排重,並對列表使用進行降序排序 例如 隨機生成了 70,88,91,70,107,234,91,177,282,197 去重之後 70,88,91,107,234,177,282,197 降序排序 282,234,197,177,...