- 创建一个列表,列表中有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)
- 利用列表推导式, 完成以下需求
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)
-
已知一个列表获取列表中指定元素所有的下标
例如:[10, 20, 34, 10, 9, 78] 10的下标:[0, 3] 20的下标:[1] 30的下标:[]
list1 = [23, 4, 67, 88, 90, 21,21] num1 = int(input('请输入想查看元素下标')) if num1 in list1: print(list1.index(num1))
-
*已知一个数字列表,写程序判断这个列表时候是连续递增列表。
例如: [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')
-
已知两个列表,将两个列表按照下面的规律交叉合并
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)
-
已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表
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)