python打卡day3

列表的基础操作

题目:

  1. 创建一个包含三个字符串元素的列表 tech_list,元素分别为 “Python”, “Java”, “Go”。
  2. 获取列表中的第一个元素,并将其存储在变量 first_tech 中。
  3. 向 tech_list 的末尾添加一个新的字符串元素 “JavaScript”。
  4. 修改 tech_list 中的第二个元素(索引为 1),将其从 “Java” 更改为 “Ruby”。
  5. 移除列表中的元素 “Go”。
  6. 计算当前 tech_list 的长度,并将结果存储在变量 current_length 中。
  7. 最后,使用 f-string 分三行打印出以下信息:
    1. 获取到的第一个技术名称。
    2. 列表当前的长度。
    3. 经过所有操作后,列表最终的内容。

打印格式应类似:

第一个技术是: Python

当前列表长度: 3

最终列表内容: [‘Python’, ‘Ruby’, ‘JavaScript’]

tech_list = ["Python", "Java", "Go"] # 创建列表,注意与集合、元组、字典等数据结构的定义做区分
first_tech = tech_list[0]
tech_list += ["JavaScript"] # 列表相加返回一个新的列表,相当于调用extend()方法
######用append()方法添加 ,最常用######
#tech_list.append("JavaScript")
######用extend() 方法添加######
#tech_list.extend(["JavaScript"])

tech_list[1] = "Ruby" # 修改元素直接再赋值就行
tech_list.remove("Go")
######用pop()方法删除######
#tech_list.pop(2)
######用del方法删除######
#del tech_list[2]

current_length = len(tech_list)
print(f'第一个技术是:{first_tech}')
print(f'当前列表长度:{current_length}')
print(f'最终列表内容:{tech_list}')

总结:

Python常见数据结构
数据结构 定义写法 特点
列表 List

使用方括号 [],元素用逗号分隔

如 tech_list = ["Python", "Java", "Go"]

1. 有序:元素有固定的顺序,可以通过索引访问
2. 可重复:允许存在相同的元素。

3. 可变:可以修改、添加、删除元素。
4. 可容纳不同类型元素:可以存储如整数、字符串、列表等不同类型的数据。

集合 Set

使用花括号 {},元素用逗号分隔,且不包含键值对

如 tech_set = {"Python", "Java", "Go"}

1. 无序:元素没有固定的顺序,不能通过索引访问
2. 唯一:元素具有唯一性,重复元素会被自动去重。
3. 可变:可以添加、删除元素,但不能修改元素
4. 主要用于成员测试和去重操作。
元组 Tuple

使用圆括号 (),元素用逗号分隔

如 tech_tuple = ("Python", "Java", "Go")

1. 有序:元素有固定的顺序,可以通过索引访问
2. 可重复:允许存在相同的元素。

3. 不可变:一旦创建,元素不能被修改、添加或删除
4. 可容纳不同类型元素:可存储不同类型的数据。常用于存储一组不可变的数据。

字典 Dictionary

使用花括号 {},包含键值对,键和值用冒号分隔,不同键值对用逗号分隔

如 tech_dict = {"Python":"high-level", "Java":"general-purpose", "Go":"efficient"}

1. 有序(Python 3.7 及之后):能保持插入顺序。
2. 键唯一:字典中的键必须是唯一的。
3. 键不可变:键通常是不可变类型(如字符串、数字、元组),值可以是任意类型。
4. 通过键访问值:可以根据键快速查找对应的值,适合存储关联数据。

列表操作

添加元素 操作方法 代码 特点

append()

最常用

list.append(x)

例子:

my_list = [1,2,3]

my_list.append([4,5])

#  my_list结果 [1, 2, 3, [4,5]]

每次向列表末尾添加单个元素x,修改原列表可以是一个数字,也可以是一个可迭代对象(如列表、元组、字符串、字典等)
extend()

list.extend(x)

例子:

my_list = [1,2,3]

my_list.extend([4,5])

#  等效写法my_list += [4,5]

#  my_list结果为 [1, 2, 3, 4, 5]

向列表末尾添加元素,修改原列表,必须是一个可迭代对象(如列表、元组、字符串、字典等)
insert()

list.insert(index,object)

例子:

my_list = [1,2,3]

my_list.insert(1,'a')

#  my_list结果 [1, 'a', 2, 3]

在指定位置插入一个元素,实际插入位置为index参数指示的索引位置的前一个位置,修改原列表
+ 和 += 操作

例子:

list1 = [1, 2]

list2 = [3, 4]

new_list = list1 + list2

list1 += list2

+ 操作创建一个新列表,只用于列表相加,不修改原列表

+= 操作相当于extend() ,右操作数必须是可迭代对象

 再辨析一下 append() 和 extend():
  • append() 将整个对象作为一个元素添加到列表末尾,如果添加字符串,整个字符串作为一个元素
tech_list = ["Python", "Java", "Go"]
tech_list.append("JavaScript")
# 结果:["Python", "Java", "Go", "JavaScript"]
  • extend() 将可迭代对象的每个元素分别添加到列表,如果添加字符串,会将字符串拆分为单个字符
tech_list = ["Python", "Java", "Go"]
tech_list.extend("JavaScript")
# 结果:["Python", "Java", "Go", "J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]
删除元素 操作方法 代码 特点

remove()

最常用

list.remove(x)

例子:

my_list = [1, 2, 0, 2]

my_list.remove(2)

#  my_list结果[1, 0, 2]

根据元素值x删除第一个与之匹配的元素,若没有找到匹配元素会报错修改原列表
pop()

list.pop(index)

例子:

my_list = [1,2,3]

my_list.pop(1)

#  my_list结果[1, 3]

根据索引删除指定元素,若不指定索引则删除最后一个元素,修改原列表
del

del list[index]

例子:

my_list = [1,2,3]

del my_list[1]

#  my_list结果 [1, 3]

根据索引或切片删除元素,修改原列表
列表推导式

list = [x for x in list if 条件]

例子:

my_list = [1, 2, 3, 2]

to_remove = [2, 3]

my_list = [x for x in my_list if x not in to_remove]

#  my_list结果 [1]

根据条件删除元素,创建一个新列表

循环语句与判断语句

题目一:计算1到100的和,用for循环来写

result = 0
for number in range(1, 101): # range()函数左闭右开,冒号表示循环体开始,一定要加,后面代码也必须缩进
    result += number
print(f'1到100的和是:{result}')

题目二:

温度预警系统

1. 定义一个变量temperature存储当前温度(整数)

2. 根据以下条件判断并打印预警信息:

   - 高于35度:打印"红色预警:高温天气!"

   - 28-35度:打印"黄色预警:天气炎热"

   - 20-27度:打印"绿色提示:适宜温度"

   - 低于20度:打印"蓝色预警:注意保暖"

3. 使用if-elif-else结构实现

4. 测试用例

temperature = 22
if temperature > 35: # 老生常谈的冒号问题,在if语句中,冒号表示条件为真时要执行的代码块的开始
    print(f'红色预警:高温天气!')
elif temperature >=28:
    print(f'黄色预警:天气炎热')
elif temperature >= 20:
    print(f'绿色提示:适宜温度')
else:
    print(f'蓝色预警:注意保暖')

题目三:

  1. 定义一个包含整数的列表 scores,赋值为 [85, 92, 78, 65, 95, 88]。
  2. 初始化两个变量:excellent_count 用于记录分数大于等于 90 的个数,初始值为 0;total_score 用于累加所有分数,初始值为 0。
  3. 使用 for 循环遍历 scores 列表中的每一个分数。
  4. 在循环内部:
    1. 将当前分数累加到 total_score 变量上。
    2. 使用 if 语句判断当前分数是否大于等于 90。如果是,则将 excellent_count 变量加 1。
  5. 循环结束后,计算平均分 average_score(总分除以分数的个数)。
  6. 使用 f-string 分三行打印出以下信息:
  7. 优秀分数(>=90)的个数。
  8. 所有分数的总和。
  9. 所有分数的平均分(结果包含3位小数)。

打印格式应类似:

优秀分数个数: 3

分数总和: 503

平均分数: 83.833

scores = [85, 92, 78, 65, 95, 88]
excellent_count = 0
total_scores = 0

for i in scores:
    total_scores += i
    if i >=90:
        excellent_count += 1
average_score = total_scores / len(scores) # 总分除以分数的个数

print(f'优秀分数个数:{excellent_count}')
print(f'分数总和:{total_scores}')
print(f'平均分数:{average_score:.3f}') 

收获心得:

1、range()左闭右开以及循环判断的冒号问题总是不咋注意

2、天杀的数据结构,常看常新的含金量()

@浙大疏锦行

你可能感兴趣的:(Python,打卡训练,python,开发语言)