题目[1]:完成下面的列表操作
用range创建一个list,命名为numbers,这个list从100到0,间隔为8。结果应如下面这样:([100,92,84,76,68,60,52,44,36,28,20,12,4]),请写出代码贴在下方:
代码:
numbers = list(range(100, 0, -8)) #list从100到0,间隔为8
print(numbers) #打印输出
运行截图:
用列表解析把前面的numbers每个数字都变成它的平方。
代码:
numbers = [] #定义空列表
for value in range(100, 0, -8):
number = value**2 #将数据平方后存入列表
numbers.append(number)
print(numbers) #打印输出
运行截图:
现有一列表student=[‘李运江’,90,‘李俊’,98,‘王林’,78,‘王德仁’,88],请用for循环和while循环分别打印出所有的成员。若你打印出以下显示情况
李运江 90
李俊 98
王林 78
王德仁 88
代码:
students = ['李运江', 90, '李俊', 98, '王林', 78, '王德仁', 88] #源列表
i = 0
j = 1 #定义下标i,j
for k in range(1, 5): #5次循环
print(students[i], students[j]) #以元组形势并列输出
i += 2
j += 2 #下标改变位置
运行截图:
题目[2]:
尝试以下内容:
相当于:
考虑以下输出结构是什么?
按照上述方式把列表推导式还原出来
代码:
bList = []
for x in range(10):
if x % 2 == 0: #选择可以被2整除的x
for y in range(10):
if y % 2 != 0: #选择可以被2整除的y
bList.append((x, y)) #将所有的元组(x,y)放进列表
print(bList)
运行截图:
中间省略一部分截图
题目[3]:求列表里的最大数, 以及最大数的下标
代码:
nums = [3, 1, 9, 8, 4, 2, 0, 7, 5] #源列表定义
x = nums[0] #默认第一个为最大值
for num in nums:
if num > x:
x = num #如果遍历到的num大于最大值x,则更新x
#打印最大值x,以及下标
print('最大数是{},对应的下标是{}'.format(x, nums.index(x)))
运行截图:
题目[4]:
有一个列表names,保存了一组姓名names=[‘zhangsan’, ‘lisi’, ‘chris’, ‘jerry’, ‘henry’]再让用户输入一个姓名,如果这个姓名在列表里存在,提示用户姓名已存在;如果这个姓名在列表里不存在,就将这个姓名添加到列表里。
代码:
names = ['zhangsan', 'lisi', 'chris', 'jerry', 'henry'] #原名字列表
username = input('请输入名字:')
# 使用 if 语句,存在则提示,不存在append添加
if username in names:
print("用户名已存在。")
else:
names.append(username)
print(names) #打印新列表
运行截图:
题目[5]:删除列表里的空字符串
利用while循环遍历列表,设置从0开始遍历,如果存在空字符串,则删除空字符串,同时令i-1,实现全部遍历实现
代码for循环:
words=['hello','good','','','yes','ok',''] #定义源列表
i=0
while i<len(words):
if words[i]=='':
words.remove(words[i]) #遍历到空,删除并使i-1
i-=1
i+=1
print(words)
代码while循环:
students = ['李运江', 90, '李俊', 98, '王林', 78, '王德仁', 88] #源列表
i = 0
j = 1 #定义下标i,j
while j <= 8: #5次循环
print(students[i], students[j]) #以元组形势并列输出
i += 2
j += 2 #下标改变位置
运行截图:
题目[6]:创建长度为20的列表,其元素为1000~5000以内的随机整数。编写程序找出列表中不能被10以内素数整除的元素。
代码:
Random.randint(1000,5000)
import random
ls=[random.randint(1000,5000) for i in range(20)] #生成随机数
ts=(2,3,5,7) #10以内的素数,待除
l1=[0]*len(ls) #定义一个和随机数长度一样的列表
for i in range(len(ls)):
for t in ts:
if ls[i] % t==0:
l1[i]=1 #对每一个随机数都用2,3,5,7测试,整除就标记
l2=[] #空列表,根据标志放置不能被整除的随机数
for i in range(len(ls)):
if l1[i]==0:
l2.append(ls[i])
print("生成的20个1000-5000的随机数是:")
print(ls)
print("其中不能被10以内素数整除的数是:")
print(l2)
运行截图:
题目[7]:使用random模块中的randint函数在0-100之间随机产生10个数,用冒泡法排序(从小到大)。
冒泡法排序的思想:将数组中的数据两两进行比较,每次将较大的数据交换到后面,直到大数沉底,小数冒出。例如:
代码:
def bubbleSort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
from random import randint
arr=[]
for n in range(10):
n = randint(0,100)
arr.append(n)
print(arr)
bubbleSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])
运行截图:
题目[8]:请写出一段Python代码实现分组一个列表里面的元素;把[1,2,3,…100]变成[[1,2,3],[4,5,6]…]
代码:
list1 = [] #定义一个存放1-100的列表
i = 1
for i in range(1, 100):
list1.append(i) #生成1-100的数并打印
print(list1)
list2 = [] #定义中间间接使用的列表
list3 = [] #定义一个存放[[1,2,3],[4,5,6]...]的列表
for i in list1:
if i % 3 == 0:
list2 = [i-2, i-1, i]
list3.append(list2)
print(list3)
运行截图:
*中间省略一部分截图
*