实验3.1 使用列表实现筛选法求素.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪

‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

目录

实验目的‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

实验内容‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

列表切片原理

enumerate用法 

filter用法 

 序列解包


实验目的‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 理解筛选法求解素数的原理。
  • 理解列表切片操作。
  • 熟练运用内置函数enumerate()。
  • 熟练运用内置函数filer()。
  • 理解序列解包工作原理。
  • 初步了解选择结构和循环结构。

实验内容‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

10‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

[2,3,5,7]

def issushu(i):
    flag = True
    for k in range(2, int(i/2) + 1):
        if i % k == 0:
            flag = False
            break
    return flag

# 声明用于存放素数的列表
primNumber = []
number=[]
print("请输入正整数:")
# 接收键盘输入
num = input()
# 判断是否为整数,如果不是,结束程序
if num.isdigit():
    # num转化为int类型
    num = int(num)
    if num > 2:
        # i即为要寻找的素数,常识可知,第一个是2,从2遍历到num
        for i in range(2, num):
            # flag用于标记当前的数是否为素数(true:素数,false:合数)
            number.append(i)
        primNumber=filter(issushu,number)
        print(list(primNumber))
    else:
        print("输入是数字不能小于2!")
else:
    print("输入了非法字符!")

列表切片原理

在Python中,列表切片操作是一种方便且强大的方法,用于提取列表中的子集。通过使用切片操作,我们可以轻松地获取列表中的特定元素范围,而无需使用循环或其他复杂的代码结构。

列表切片的基本语法如下:

my_list[start:stop:step]

其中,my_list是要进行切片操作的列表,start表示起始索引,stop表示结束索引(不包含在结果中),step表示步长(可选参数,默认为1)。

以下是一些示例,展示了如何使用列表切片操作:

  1. 提取列表中的子集:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
subset = my_list[2:5] # 提取索引2到4之间的元素(不包括索引5)
print(subset) # 输出:[2, 3, 4]
  1. 从列表的开头或结尾提取元素:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
first_three = my_list[:3] # 提取列表开头的三个元素
last_three = my_list[-3:] # 提取列表末尾的三个元素
print(first_three) # 输出:[0, 1, 2]
print(last_three) # 输出:[7, 8, 9]
  1. 使用步长提取列表中的元素:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
every_other = my_list[::2] # 提取列表中的每隔一个元素
print(every_other) # 输出:[0, 2, 4, 6, 8]

需要注意的是,切片操作不会修改原始列表,而是返回一个新的列表对象。如果要对原始列表进行修改,可以将切片结果赋值给一个新变量,并对新变量进行修改,然后再将修改后的值赋回原始列表的相应位置。例如:

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
subset = my_list[2:5] # 提取索引2到4之间的元素(不包括索引5)
subset[0] = 10 # 修改子集中的第一个元素
my_list[2:5] = subset # 将修改后的子集赋回原始列表的相应位置
print(my_list) # 输出:[0, 1, 10, 3, 4, 5, 6, 7, 8, 9]
enumerate用法 

在Python中,enumerate()是一个内置函数,用于在遍历一个序列(如列表、元组或字符串)时,同时获取每个元素的索引和值。enumerate()函数返回一个枚举对象,其中包含每个元素的索引和值。

以下是enumerate()函数的基本用法:

my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(index, value)

输出:

0 apple
1 banana
2 cherry

在上面的例子中,enumerate(my_list)返回一个枚举对象,该对象在每次循环迭代时生成一个包含索引和值的元组(index, value)。我们可以使用for循环来遍历这个枚举对象,并在每次迭代中访问索引和值。

enumerate()函数还可以接受一个可选的第二个参数,用于指定索引的起始值。例如:

my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list, start=1):
print(index, value)

输出:

1 apple
2 banana
3 cherry

在这个例子中,我们通过将start参数设置为1,指定了索引的起始值为1,而不是默认的0。

filter用法 

在Python中,内置函数filter()用于过滤序列中的元素,返回一个由符合指定条件的元素组成的新序列。

filter()函数接受两个参数:第一个参数是一个函数,用于指定过滤条件;第二个参数是一个序列,用于指定要过滤的序列。filter()函数将依次将序列中的每个元素传递给指定的函数,如果函数返回True,则将该元素保留在新序列中,否则将其过滤掉。

以下是filter()函数的基本用法:

# 定义一个过滤函数,用于判断一个数是否为偶数
def is_even(num):
return num % 2 == 0
# 定义一个整数列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用filter()函数过滤偶数
even_numbers = filter(is_even, numbers)
# 将过滤结果转换为列表并输出
print(list(even_numbers))

输出:

[2, 4, 6, 8, 10]

在上面的例子中,我们定义了一个名为is_even()的函数,用于判断一个数是否为偶数。然后,我们定义了一个整数列表numbers,并使用filter()函数将列表中的偶数过滤出来。由于filter()函数返回的是一个迭代器对象,我们使用list()函数将其转换为列表,并输出结果。

 序列解包

在Python中,序列解包是一种方便且简洁的方式,用于将序列(如列表、元组或字符串)中的元素分配给多个变量。通过序列解包,我们可以一次性地将序列中的多个元素赋值给对应的变量,而无需逐个进行赋值操作。

序列解包的工作原理如下:

  1. 首先,我们需要有一个包含多个元素的序列,例如一个列表、元组或字符串。
  2. 然后,我们使用一个赋值语句,将序列中的元素分配给多个变量。在赋值语句的左侧,我们列出要接收元素的变量,并使用逗号分隔。在赋值语句的右侧,我们放置要解包的序列。
  3. Python解释器在执行这个赋值语句时,会依次将序列中的元素分配给左侧的变量。变量的数量需要与序列中元素的数量相匹配,否则将会引发一个ValueError异常。
  4. 如果序列中的元素数量少于要接收元素的变量数量,那么未被分配值的变量将被赋予None值。
  5. 如果序列中的元素数量多于要接收元素的变量数量,那么超出的元素将被忽略。

下面是一个简单的示例,展示了如何使用序列解包将列表中的元素分配给多个变量:

# 定义一个包含多个元素的列表
my_list = [1, 2, 3, 4, 5]
# 使用序列解包将列表中的元素分配给多个变量
a, b, c, d, e = my_list
# 输出变量的值
print(a) # 输出:1
print(b) # 输出:2
print(c) # 输出:3
print(d) # 输出:4
print(e) # 输出:5

在这个例子中,我们将my_list列表中的元素一次性地分配给了变量abcde。通过序列解包,我们可以更快捷地进行变量赋值操作。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值