day6 列表作业(修改)

day6 列表作业(修改)

# 1.生成50-300之间可重复的 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]

nums=[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
new_nums=[]
for x in nums:
    if x not in new_nums:
        new_nums.append(x)
print(new_nums)
new_nums.sort(reverse=True)
print(new_nums)

# 参考答案
from random import randint
# nums=[]
# for _ in range[10]:
#     nums.append(randint(50,300))
nums=[randint(50,300) for _ in range(10)]
new_nums=[]
# print(nums)
for x in nums:
    if x not in new_nums:
        new_nums.append(x)
# print(new_nums)
new_nums.sort(reverse=True)
print(new_nums)


# 2.利用列表推导式, 完成以下需求
# a. 生成一个存放1-100中个位数为3的数据列表
# 方法1
list1 =[x for x in range(1,101) if x%10==3]
print(list1)
# 方法2(参考答案)
list1=[x for x in range(3,100,10)]
print(list1)


# b. 利用列表推到是将 列表中的整数提取出来
# type(数据)==类型名  -判断指定数据是否是指定类型
# isinstance(数据,类型) - 判断指定数据是否是指定类型
# 例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
# 法1
items=[True, 17, "hello", "bye", 98, 34, 21]
list2=[x for x in items if type(x) is int]
print(list2)#[17, 98, 34, 21]
# 法2
list3=[x for x in items if isinstance(x,int)]
print(list3)#[True, 17, 98, 34, 21]
# type(数据)与isinstance(数据,类型)区别是type判断是否是其类,isinstance 判断指定的类或者是其子类


# c.利用列表推导式 存放指定列表中字符串的长度
# 例如 ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
item1=["good", "nice", "see you", "bye"]
list3=[len(x) for x in item1]
print(list3)


# 3.已知代码如下,请回答出各个print的结果 并说明原因
nums = [17, 39, 28, 51]
nums2 = nums
nums2.pop()
print(len(nums)) # 这个结果是什么   请描述原因
#结果为3,nums与nums2是同一地址
# 因为将nums赋值给nums2,也就是将nums的内存地址拿给了nums2,nums与nums2同时指向同一个列表,nums2.pop()将nums2所指的列表的最后一个元素拿出来,len(nums2)=3,那么len(nums)=3
numlist = [17, 22, 39, 58, [55, 43]]
nums3 = numlist.copy()
print(numlist is nums3) # 结果  原因是什么
#结果为False
#列表.copy(),因为复制原列表产生一个相同的新列表(数据相同,地址不同),数据1 is 数据2又判断的是两个数据的地址是否同,故numlist is nums3 的结果是False.
numlist[-1][0] = 99
print(nums3) # num3会不会发生变化
#num3会发生变化
#


# 4.自己用代码实现列表相关方法的功能:count、index、extend、clear
# 1.count功能
list1 = [90,80,90,78,98,5,67,55,23,90]
item=90
count1=0
for x in list1:
    if x==item:
        count1+=1
print(count1)

# 2.index
list1 = [90,89,90,76,56,67,89,12,90,55]
item =89
for index,x in enumerate(list1):
    if x==item:
        print('下标',index)
        break
else:
    print('没有该元素')

# extend
nums=[1,2,3,4]
seq='abc'
for x in seq:
    nums.append(x)
print(nums)

# clear
nums=[1,2,3]
for _ in range(len(nums)):
    nums.pop()
print(nums)


上一篇:课程设计day6


下一篇:spark遇到的错误1-内存不足