前端学习python第三天笔记整理(list 列表,str字符串,tuple元组,set集合,dect,函数,类型注解)

1.数据容器-list

python 复制代码
#定义列表 -list
s=[56,90,60,"hello",True,90]
print(type(s))

#当问列表元素
#获取
print(s[0]) #正向索引,从0开始
print(s[-6]) #反向索引 从 -1开始

print(s[2])
print(s[-5])

#修改
s[5] =("ASD")
print(s)

#注意:如果指定的索引,超过范围将会报错
# s[10] ="DEP"
# print(s)

#删除
del s[5]
print(s)

#遍历
for i in s:
    print(i)

#列表-切片截取
s=["A","B","C","D","E","F","G","H","I","J"]
#切片操作 s[开始索引:结束索引:步长]
print(s[0:5:1])
print(type(s[0:5:1]))

print(s[:5:1])
print(s[:5:])
print(s[:5])

print(s[0:5:2])
print(s[0:-2:1])

2list-常用方法

python 复制代码
#append():都在末尾添加元素 和JavaScript 数组中的push()一样
students = ["小明", "小红"]
students.append("小刚")
print(students)

#insert()在指定位置插入 和JavaScript 数组中的splice()一样
arr = [1, 2, 4]
arr.insert(2, 3)
print(arr)

#remove()按值直接删除的方法和JavaScript 数组中的indexOf + splice()一样
arr = [10, 20, 30]
arr.remove(20)
print(arr)

#pop() 删除并返回最后一个和JavaScript 数组中pop()一样
tasks = ["语文", "数学", "英语"]
item = tasks.pop()
print("剩余:", tasks)
print("被删除的:", item)

#pop(i)删除指定索引和avaScript 数组中splice(i, j)一样
nums = [10, 20, 30, 40]
x = nums.pop(1)
print("删除的元素:", x)
print("删除后的列表:", nums)

#sort()按真实大小排序 和avaScript 数组中sort()不太一样
nums = [10, 2, 30, 1]
nums.sort()
print(nums)

3.数据容器-str常用方法

python 复制代码
#find()------ 查找子串位置
# 定义一个字符串变量 s
s = "Hello Python World"

# 尝试查找 "Python"
position = s.find("Python")
print(f"'Python' 第一次出现的索引位置是: {position}")

# 尝试查找一个不存在的词 "Java"
position_not_found = s.find("Java")
print(f"'Java' 的位置是: {position_not_found}")


#count()------ 统计出现次数
email_text = "Please contact us at support@example.com for assistance."

# 统计字母 'e' 出现的次数
count_e = email_text.count("e")
print(f"字母 'e' 在这段话中出现了 {count_e} 次")

#upper()------ 全部转为大写

title = "introduction to python"

# 转换为全大写
upper_title = title.upper()

print(f"原始标题: {title}")
print(f"转换后标题: {upper_title}")

#lower()------ 全部转为小写

user_input = "YES"

# 转换为全小写
standard_input = user_input.lower()

if standard_input == "yes":
    print("用户同意了请求")
else:
    print("等待用户确认")


#split()------ 分割字符串

# 假设有一行由空格隔开的名字
names = "Alice Bob Charlie David"

# 默认按空格分割,返回一个列表
name_list = names.split()

print(f"分割前的类型: {type(names)}")
print(f"分割后的类型: {type(name_list)}")
print(f"分割后的结果: {name_list}")


#strip()------ 去除两端字符

# 模拟用户输入,前后带有多余的空格和星号
raw_data = "   ***  Hello World  ***   "

# 去除两端的空白字符(默认行为)
cleaned_data = raw_data.strip()
print(f"去除空白后: '{cleaned_data}'")

# 去除两端的指定字符 '*' 和空格
final_data = raw_data.strip(' *')
print(f"去除星号后: '{final_data}'")

#replace()------ 替换子串

sentence = "The rain in Spain stays mainly in the plain."

# 将所有的 "ain" 替换为 "*"
replaced_sentence = sentence.replace("ain", "*")

print(f"原文: {sentence}")
print(f"替换后: {replaced_sentence}")


#startswith()------ 检查开头
filename = "report_2023_sales.csv"

# 检查文件名是否以 "report" 开头
if filename.startswith("report"):
    print(f"{filename} 是一份报告文件,准备处理...")
else:
    print(f"{filename} 不是报告文件,跳过。")

6.数据容器-元组(tuple

python 复制代码
#元组(tuple)​ 是 Python 中的一种内置数据类型,用于存储多个元素。
# 方式一:使用小括号 ()
t1 = (1, 2, 3)
print(t1)

# 方式二:省略括号(推荐写法)
t2 = 1, 2, 3
print(t2)

# 方式三:只有一个元素的元组(⚠️必须加逗号)
t3 = (5,)
print(type(t3))

t = ("Python", "Java", "C++", "Go")

# 正向索引
print(t[0])     # Python

# 负向索引
print(t[-1])    # Go

# 切片
print(t[1:3])   # ('Java', 'C++')

#元组不可变(重点案例)
# t = (10, 20, 30)
# # ❌ 错误示例:不能修改元组元素
# t[1] = 99

#如果元组中包含可变对象(如列表),列表内部是可变的:
#元组本身不可变,但其引用的对象可能可变
t = (1, 2, [3, 4])
t[2].append(5)
print(t)

#、元组常用操作
#遍历元组
languages = ("Python", "Java", "C")

for lang in languages:
    print(lang)

#统计元素个数:count()
scores = (90, 85, 90, 100)
print(scores.count(90))

# 查找索引:index()
colors = ("red", "green", "blue")
print(colors.index("green"))

#元组拼接
t1 = (1, 2)
t2 = (3, 4)

t3 = t1 + t2
print(t3)

#元组解包(Unpacking)
point = (10, 20)

x, y = point
print(x, y)
#常用于函数返回多个值:
def get_user():
    return "Alice", 18

name, age = get_user()
print(name, age)

7.数据容器-集合set

python 复制代码
#是 Python 中的一种无序、不重复的数据类型,用于存储唯一元素。
import difflib

s1 = {1, 2, 3, 4}
print(s1)
s2 = set([1, 2, 2, 3])
print(s2)

#添加元素:add()
s = {"Python", "Java"}
s.add("C++")

print(s)

s = set()   # ✅ 空集合
print(s)

#1.add(...):添加元素到集合
s1 = {1, 2, 3}
s1.add(4)       # s1变为 {1, 2, 3, 4}
s1.add(2)       # 2已存在,集合不变,仍为 {1, 2, 3, 4}
print(s1)

#2.remove(...):移除指定元素
s1={1,2,3}
s1.remove(2)
print(s1)

#3.pop():随机删除并返回元素,从集合中随机删除一个元素,并返回该元素(集合为空时调用会报错)。

s1 = {1, 2, 3}
e = s1.pop()    # 随机删一个(比如删了2),e=2,s1变为 {1, 3}
print(e, s1)

s2 = set()      # 空集合
# s2.pop()      # 报错:KeyError(空集合无法pop)

#4.clear():清空集合

s1={1,2,3}
s1.clear()
print(s1)

#5. difference():求差集(A - B)
#返回一个新集合,包含在第一个集合但不在第二个集合的元素。
s1={1,2,3}
s2={3,4,5,6}
diff = s1.difference(s2)
print(diff)

#union():求并集(A ∪ B) 返回一个新集合,包含两个集合的所有元素(去重)。
s1 = {1, 2, 3}
s2 = {3, 4, 5}
union_set = s1.union(s2)  # union_set = {1, 2, 3, 4, 5}
print(union_set)

#intersection():求交集(A ∩ B) 返回一个新集合,包含两个集合都有的元素(去重)。
s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
inter = s1.intersection(s2)  # inter = {3, 4}
print(inter)

8.数据容器-字典dict

python 复制代码
#字典是 Python 中非常有用的内置数据类型,它以 键值对(key-value) 的形式存储数据,就像一本真正的"字典":
#键:必须是唯一且不可变的(如字符串、数字、元组)
#值:可以是任意类型(数字、字符串、列表、甚至另一个字典)

#增(添加键值对)
d={}
d["name"]="小明"
d["age"]=18
print(d)

#删(删除键值对)
# 方法1:del(直接删除)
del d["age"]               # 删除键"age"及其值
print(d)                   # {'name': '小明'}

# 方法2:pop(删除并返回被删除的值)
name = d.pop("name")       # 删除键"name",返回值赋给name
print(name)                # 小明
print(d)                   # {}

#改(修改键对应的值)
d = {"name": "小明", "score": 80}
d["score"] = 95            # 直接赋值,如果键已存在就是修改
print(d)                   # {'name': '小明', 'score': 95}

#查(获取键对应的值)
d = {"name": "小明", "age": 12}

# 方法1:直接用方括号(键不存在会报错)
print(d["name"])           # 小明

# 方法2:使用 get()(推荐,键不存在返回None或默认值)
print(d.get("age"))        # 12
print(d.get("score", 0))   # 0(键不存在,返回默认值0)

9.函数

python 复制代码
#函数1:计算圆的面积--半径
def circle_area(radius):
    area=3.14*radius**2
    return area
print(circle_area(10))

#函数3计算
def circle_area(radius):
    return 3.14*radius**2
al=circle_area(10)
print(al)

#1.全局变量作用域局部变量(Local)

# def my_func():
#     x=10
#     print(x)
#
# my_func()
# print(x)

#2. 全局变量(Global)
name = "小明"       # 全局变量

def say_hello():
    print(name)     # 可以读取全局变量

say_hello()         # 小明

def change_name():
    name = "小红"   # 注意:这是在函数内创建了一个新的局部变量,不会修改全局变量
    print(name)     # 小红

change_name()
print(name)         # 小明(全局没变)

# 正确修改全局变量:使用 global
def really_change():
    global name
    name = "小华"

really_change()
print(name)         # 小华


#嵌套作用域(Enclosing) 函数里面再定义函数,内层函数可以访问外层函数的变量(使用 nonlocal 修改

def outer():
    count = 0  # 嵌套作用域的变量

    def inner():
        nonlocal count  # 声明要修改外层变量
        count += 1
        print(count)

    inner()  # 1
    inner()  # 2
outer()



#高阶函数(Higher-Order Function),也就是把函数当作参数来传递
def add(a,b):
    return a+b

def sub(a,b):
    return a-b
def calc(x, y, oper):
    return oper(x, y)
result = calc(10, 20, add)
print("@",result)

# 匿名函数Python中的匿名函数,正如其名,指的是没有名称的函数。它们主要通过 lambda表达式来声明,这种写法非常适合用来简化简单的、单行表达式的函数编写。
# 语法格式 lambda 参数列表: 函数体(表达式)
# 示例一(无参数):
lambda: print('----------------------')
#示例二(带参数):
lambda x, y: x + y #冒号前的 x, y是接收的参数,冒号后的 x + y是执行的表达式。这个函数的作用就是接收两个数,然后返回它们的和。

#如何调用匿名函数?
(lambda x, y: x + y)(10, 20)  # 输出 30
#将其赋值给一个变量,然后通过变量名来调用(此时该匿名函数实际上被赋予了名字)。
add = lambda x, y: x + y
print(add(10, 20))  # 输出 30


#递归
def jc(n):
    if n == 1:
        return 1
    else:
        return n * jc(n-1)
result = jc(10)
print(result)

10.类型注解

python 复制代码
#Python 3.5 版本引入了一种强大的语法特性------类型提示(Type Hints),也就是 PEP 484 标准。

# 没有类型提示
age = 18
height = 1.75
name = "小明"

age: int = 18
height: float = 1.75
name: str = "小明"

def add(a: int, b: int) -> int:
    return a + b

add(10, 20)      # ✅ 正确
# add("10", 20)    # ⚠ IDE 会警告,但还能跑
相关推荐
IT_陈寒1 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
DigitalOcean3 小时前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
星始流年3 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
李惟3 小时前
开源本地通信库,纯客户端 RPC,像聊天一样通信
前端
YAwu113 小时前
深入解析 React 炫彩鼠标跟随标题组件:从坐标定位到动画性能
前端·react.js
GuWenyue3 小时前
排序效率低?5分钟吃透快速排序,性能飙升至O(nlogn)
前端·javascript·面试
OpenTiny社区3 小时前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
叁两3 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
何时梦醒3 小时前
深入理解递归与快速排序 —— 从基础入门到手写实现
前端·javascript
爱勇宝3 小时前
淡泊名利之前,先承认我们都很焦虑
前端·后端·程序员