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,...