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, 107, 91, 88, 70]
list1 = [70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
index = 0
while index < len(list1):
    if list1[index] in list1[index +1:]:
        del list1[index]
    else:
        index +=1
list1 = sorted(list1,reverse = True)
print(list1)
  1. 利用列表推导式, 完成以下需求

a. 生成一个存放1-100中各位数为3的数据列表

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
list1 = [x  for x in range(3,100) if x % 10 == 3 ]
print(list1)

b. 利用列表推到是将 列表中的整数提取出来

例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
list1 = [True, 17, "hello", "bye", 98, 34, 21]
result = [x for x in list1 if type(x) == int]
print(result)

c.利用列表推导式 存放指定列表中字符串的长度

例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
list1 = ['Python','Java','C','C++','PHP']
result = [len(x) for x in list1]
print(result)

d. 利用列表推导式删除列表中整数个位数小于5的元素

例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']
list1 = [24, 'abc', 99, True, 21, 38, 'hello']
result = [list1.remove(x) if type(x) == int and x % 10 <5 else x for x in list1 ]
print(result)

e. 利用列表推导式获取元素是元组的列表中每个元组的最后一个元素

例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]  --- [30, 'hello', 3.4, False]
list1=[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
result = [x[-1] for x in list1 ]
print(result)

f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2

例如: [23, 4, 67, 88, 90, 21]  -> [46, 2, 134, 44, 45, 42]
nums = [23, 4, 67, 88, 90, 21]
result = [x * 2 if x % 2 else x / 2 for x in nums]
print(result)
  1. 已知一个列表获取列表中指定元素所有的下标

    例如:[10, 20, 34, 10, 9, 78]
    10的下标:[0, 3]
    20的下标:[1]
    30的下标:[]
    
    list1 = [23, 4, 67, 88, 90, 2121]
    num1 = int(input('请输入想查看元素下标'))
    if num1 in list1:
    	print(list1.index(num1))
    
  2. *已知一个数字列表,写程序判断这个列表时候是连续递增列表。

    例如:
    [1, 2, 3, 4, 5]   -> True
    [23, 45, 78, 90]  -> True
    [1, 3, 2, 4, 5]	-> False
    
    list1 = [12,30,45,67,89]
    result = sorted(list1)
    if list1 == result:
        print('True')
    else:
        print('False')
    
  3. 已知两个列表,将两个列表按照下面的规律交叉合并

    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    结果:[10, 100, 20, 200, 30, 300, 40, 50]
    
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    C = A+B
    
    print(C)
    
  4. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    结果:[10, 20, 25, 30, 40, 45, 50, 60]
    
    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    
    C = A+B
    C = sorted(C)
    print(C)
    

1.列表相关的运算符

1.数学运算符:+、*

列表1 + 列表2  -  将两个列表中的元素合并产生一个新的列表
list1 = [100,200,300]
list2 = [10,20]
print(list1+list2)    #[100,200,300,10,20]

#列表*N/N*列表  -  列表中的元素重复N次产生一个新的列表
print(list2 * 3)    #[10,20,10,20,10,20]

2.比较运算符

补充:不同的类型可以使用 ==!=  来比较是否相等,但不能使用<,>,<=,>=来比较大小
#1) == !=
print([10,20,30] == [10,20,30])   #True
print([10,20,30] == [20,10,30])   #False(列表有序)

#2) >,<,>=,<=
比较的是第一段不相等的大小(10  比较  20)
print([10,100,200,400] > [20,1])

2.列表相关函数

1.max、min


#max(序列)   -   获取序列中最大的元素
#min(序列)   -   获取序列中最小的元素
nums = [10,29,78,34,56,5,72]
print(max(nums))
print(min(nums))

#nums = [10,'abc',23,8]
#print(max(nums))     #报错

#max高级用法
# students = [
#     {'name': '小明', 'age': 18, 'gender': '男', 'score': 99},
#     {'name': '1', 'age': 14, 'gender': '男', 'score': 79},
#     {'name': '12', 'age': 12, 'gender': '男', 'score': 98},
#     {'name': '456', 'age': 21, 'gender': '男', 'score': 65},
#     {'name': '123', 'age': 37, 'gender': '男', 'score': 73},
# ]
#
# print(max(students,key=lambda x:x['age']))

2.sum

#sum(数字序列)  -  求序列中所有元素的和
nums = [10,29,78,34,56,5,72]
print(sum(nums))
print(sum(range(101)))

3.sorted

#sorted(序列)   -   将序列中的元素从小到大排序,产生一个新的列表
#sorted(序列,reverse = True)  -  将序列中的元素从大到小排序,产生一个新的序列
nums = [10,20,78,34,56,78,5]
new_nums = sorted(nums)
print(new_nums)    #[5, 10, 20, 34, 56, 78, 78]

nums = [10,20,78,34,56,78,5]
new_nums = sorted(nums,reverse=True)
print(new_nums)    #[78, 78, 56, 34, 20, 10, 5]

4. len

#len(序列)  -  获取序列中元素的个数
print(len([10,20,30]))
print(len('abc'))
print(len(range(6,200)))

5.list

list(序列)   -   将序列的元素作为列表的元素创建一个新列表
print(list('abc'))   #['a', 'b', 'c']
print(list(range(3)))   #[0, 1, 2]

3.列表相关的方法

列表.append(元素)
列表.insert(下标,元素)
列表.remove(元素)
列表.pop()

1.clear 列表.clear() - 清空列表

nums = [10,20,34,56]
nums.clear()
print(nums)    #[]

2.copy 列表.copy() - 复制列表产生一个一样的新列表

列表.copy() - 浅拷贝
列表[:]、列表*1、列表+[]都是浅拷贝

nums = [10,20,34,56]
new_nums = nums.copy()
print(new_nums)    #[10,20,34,56]
new_nums2 = nums

print('nums的id',id(nums))
print('nums的id',id(new_nums))
print('nums的id',id(new_nums2))

nums.append(100)
print(new_nums)
print(new_nums2)

3.count 列表.count - 统计列表中指定元素的个数

nums = [10,20,345,6,5,87,978,20,10,10]
print(nums.count(10))    #3

c1 = nums.count(8)
print(c1)     #0

4.extend 列表.extend(序列) - 将序列中的元素全部添加到列表中

nums = [100,200]
#nums.append([10,20])
#print(nums)   #[100,200,[10,20]]

nums.extend([10,20])
print(nums)   #[100,200,10,20]

nums.extend('abc')
print(nums)  #[100, 200, 10, 20, 'a', 'b', 'c']

5.index 列表.index(元素) - 获取元素在列表中的下标值

#如果有多个元素返回第一个,如果元素不存在会报错
nums = [10,20,34,89,10,34,80,10]
result = nums.index(20)
print(result)    #1

result = nums.index(89)
print(result)    #3

result = nums.index(10)
print(result)    #0

#result = nums.index(100)    #报错:ValueError: 100 is not in list

6.reverse() 列表.reverse() - 列表逆序

nums = [10,28,90,67,20]
nums.reverse()
print(nums)  #[20, 67, 90, 28, 10]

7.sort(排序)

# 列表.sort() / 列表.sort(reverse = True)
#sorted(列表) / sorted(列表,reverse = True)
nums = [10,28,90,67,20]
result = sorted(nums)
print(nums)     #[10, 28, 90, 67, 20]
print(result)    #[10, 20, 28, 67, 90]

nums = [10,28,90,67,20]
result = nums.sort()
print(nums)     #[10, 20, 28, 67, 90]
print(result)     #None

4.列表推荐

1.推导式结构1

“”"
[表达式 for 变量 in 序列] - 让变量取序列中的值,一个一个的取,取完为止,每一个值就将表达式的值作为列表的一个元素
“”"


list1 = [10 for x in 'abc']
print(list1)      #[10,10,10]

list2 = [x*2 for x in range(5,11)]
print(list2)    #[10, 12, 14, 16, 18, 20]

# 练习: 使用列表推导式获取nums中所有元素的个位数
# [3, 9, 0, 6, 1, 2]
nums = [23, 89, 90, 56, 41, 802]
result = [x%10 for x in nums]
print(result)
# 练习2:是用列表推导式将nums中所有的元素乘以10
# [230, 890, 900, 560, 410, 8020]
nums = [23, 89, 90, 56, 41, 802]
result = [x * 10 for x in nums]
print(result)
# 练习3:已知分数列表,将列表中的元素全部换成'及格' - True 或者'不及格'-False
#  [True, True, False, True, False, True]
scores = [90, 78, 45, 67, 39, 89]
result = [x >= 60 for x in scores]
print(result)

# ['及格', '及格', '不及格', '及格', '不及格', '及格']
result = ['及格' if x >= 60 else '不及格' for x in scores]
print(result)

# 练习4:已知一个数字列表,将列表中所有的偶数除以2,所有的奇数乘以2
# [46, 178, 45, 28, 82, 401]
nums = [23, 89, 90, 56, 41, 802]
result = [x * 2 if x % 2 else x / 2 for x in nums]
print(result)

2.推导式结构2

“”"
[表达式 for 变量 in 序列 if 条件语句]

创建一个列表;
变量取序列取值,一个一个的取,取完为止,每取一个直接就判断条件语句是否为True,如果为True就计算表达式的结果为列表的元素
“”"

result = [x for x in range(10,20) if x % 2]
print(result)   #[11, 13, 15, 17, 19]

# 练习1:使用列表推导式提取nums中所有的奇数
# [23, 89, 41]
nums = [23, 89, 90, 56, 41, 802]
result = [x for x in nums if x % 2]
print(result)

# 练习2:已知一个列表,提取列表中所有的字符串
#['hello','12']
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [x for x in list1 if type(x) == str]
print(result)

# 练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
# [13, 3]
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [x+3 for x in list1 if type(x) == int]
print(result)

5.补充三目运算符

#C和Java
"""
表达式?值1:值2  -  如果表达式的值为真结果就是值1,否则结果是值2
"""

#python
"""
值1 if 表达式 else 值2  -  如果表达式的值为True结果就是值1,否则就是值2
"""
age = 18
result = '成年' if age > 18 else '未成年'
print(result)

a = 1
b = 2
result = b * 2 if a > 0 else b / 2
print(result)

6.元组

元组就是不可变的列表
查、in和not in、数学运算、比较运算、相关函数 - 元组都支持

1.什么是元组(tuple)

“”"
(元素1,元素2,元素3,…)
不可变的;有序
“”"

#空元组
t1 = ()
print(t1,type(t1))

#有一个元素的元组:(元素:)
t2 = (10)
print(t2,type(t2))

t3 = (10,23,78,90,67,89)
print(t3[1])
print(t3[-1])
print(t3[-3:])     #(90,67,89)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值