Python基础小练习_列表2

本文主要探讨Python编程语言的基础知识,特别是关于列表这一数据结构的使用。内容包括列表的创建、元素的增删改查、列表推导式以及列表在实际问题中的应用。通过实例讲解,帮助读者深入理解Python列表操作。

# 1. 基础题

1. 已知一个数字列表,打印列表中所有的奇数

	[i for i in range(5) if i % 2 != 0]

2. 已知一个数字列表,打印列表中所有能被3整除但是不能被2整除的数

	[i for i in range(10) if i % 2 != 0 and i % 3 == 0]

3. 已知一个数字列表,计算所有偶数的和

	sum([i for i in range(10) if i % 2 == 0])

4. 已知一个数字列表,统计列表中十位数是`1`的数的个数

	len([i for i in range(13) if i // 10 % 10 == 1])

5. 已知一个列表,获取列表中下标为奇数的所有元素(0开始的下标值)
	例如: lst1 = [10, 20, 5, 34, 90, 8]
	结果:[20, 34, 8]

	方法一:
	lst1[1::2]
	
	方法二:
	lst1 = [10, 20, 5, 34, 90, 8]
	[lst1[i] for i in range(len(lst1)) if i % 2 != 0]

7. 已知一个数字列表,将列表中所有元素乘以2
	例如: nums = [10, 3, 6, 12]2: nums = [20, 6, 12, 24]

	nums = [10, 3, 6, 12]
	[i * 2 for i in nums]

8. 已知一个列表,获取列表的中心元素
	例如:nums = [10, 2, 6, 12]   -> 中心元素为: 26
	nums = [10, 2, 6, 12, 10]   -> 中心元素为:6

	nums = [10, 2, 5, 12, 10]
	if len(nums) % 2 == 0:
		print(nums[int(len(nums) / 2) - 1])
		print(nums[int(len(nums) / 2)])
	else:
		print(nums[int(len(nums) / 2)])

9. 已知一个列表,获取列表中所有的整型元素
	例如:list1 = [10, 1.23, 'abc', True, 100,  'hello', '20', 5]
	结果是: [10, 100, 5]

	lst1 = [10, 1.23, 'abc', True, 100,  'hello', '20', 5]
	[i for i in lst1 if type(i) == int]


### 2. 进阶题

1. 定义一个列表保存多个学生的分数,删除列表中所以低于60分的值
   例如: scores = [45, 60, 89, 30, 12, 59, 99, 80, 71, 66]   删除后: scores = [60, 89, 99, 80, 71, 66]

	scores = [45, 60, 89, 30, 12, 59, 99, 80, 71, 66]
	[i for i in scores if i >= 60]

2. 已知一个列表保存了多个学生的姓名,要求去掉列表中重复的名字
   例如:names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']    
   去重后:names = ['小明', '张三', '李四', '王五']

   names = ['小明', '张三', '李四', '张三', '张三', '小明', '王五', '王五']
   {i for i in names}

3. 已知一个数字列表,获取列表中值最大的元素 (不能使用max函数)

	num = [5, 2, 10, 7, 1, 4]
	lst = [0]
	for i in num:
		if i > lst[0]:
			lst[0] = i
	
	print(lst[0])

4. 已知两个有序列表(列表中的元素已经按照从小到大的方式排好序),要求合并两个列表,合并后元素还是从小到大排序
   例如: list1 = [10, 23, 39, 41, 52, 55, 80]    list2 = [9, 38, 55, 70]
   合并后的结果:  [9, 10, 23, 38, 39, 41, 52, 55, 55, 70, 80]

	A = [10, 23, 39, 41, 52, 55, 80]
	B = [9, 38,  55, 70]

	def func(lst1, lst2):
		lst = []
		count1 = 0
		count2 = 0
		
		while count2 < len(B) and count1 < len(A):
			if A[count1] < B[count2]:
				lst.append(A[count1])
				count1 += 1
			elif A[count1] > B[count2]:
				lst.append(B[count2])
				count2 += 1
			else:
				lst.extend([A[count1], B[count2]])
				count1 += 1
				count2 += 1

		if count1 == len(A):
			lst.extend(B[count2:])
		elif count2 == len(B):
			lst.extend(A[count1:])

		return lst


	func(A, B)

5. 已知一个有序数字列表(从小到大),输入任意一个数字,将输入的数字插入列表中,要求插入后列表仍然保持从小到大排序的关系
   例如: list1 = [10, 23, 45, 67, 91]   输入: 50   ->  list1 = [10, 23, 45, 50, 67, 91]

	lst1 = [10, 23, 45, 67, 91]
	num = 50
	for i in range(len(lst1)):
		if lst1[i] >= num:
			lst1.insert(i, num)
			break
	else:
		lst1.append(num)

	print(lst1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值