Python基础知识归纳总结

目录

一、线性表

总结

二、栈

三、队列

四、哈希表

五、字符串

六、正则表达式

综合示例


一、线性表

线性表(通常用列表表示)是一种按线性顺序存储元素的数据结构。

  1. 插入元素 (appendinsert)

  2. 删除元素 (removepop)

  3. 查找元素 (index)

  4. 更新元素 (直接索引访问)

  5. 遍历元素 (for循环)

  6. 检查元素存在 (in运算符)

  7. 获取长度 (len)

插入元素

  • append: 在列表末尾添加一个元素。

    1

    lst = [1, 2, 3]

    2

    lst.append(4)

    3

    print(lst) # 输出: [1, 2, 3, 4]

    返回值:None,操作是原地修改列表。

  • insert: 在指定位置插入一个元素。

    1

    lst = [1, 2, 3]

    2

    lst.insert(1, 9)

    3

    print(lst) # 输出: [1, 9, 2, 3]

    返回值:None,操作是原地修改列表。

删除元素

  • remove: 删除第一个匹配的元素。

    1

    lst = [1, 2, 3, 2]

    2

    lst.remove(2)

    3

    print(lst) # 输出: [1, 3, 2]

    返回值:None,操作是原地修改列表。如果元素不存在,会引发ValueError

  • pop: 删除并返回指定位置的元素,默认删除最后一个元素。

    1

    lst = [1, 2, 3]

    2

    removed_element = lst.pop()

    3

    print(lst) # 输出: [1, 2]

    4

    print(removed_element) # 输出: 3

    返回值:被删除的元素。如果列表为空,调用pop会引发IndexError

查找元素

  • index: 返回第一个匹配元素的索引。

    1

    lst = [1, 2, 3]

    2

    idx = lst.index(2)

    3

    print(idx) # 输出: 1

    返回值:匹配元素的索引。如果元素不存在,会引发ValueError

更新元素

  • 直接索引访问:通过索引更新元素。

    1

    lst = [1, 2, 3]

    2

    lst[1] = 9

    3

    print(lst) # 输出: [1, 9, 3]

    返回值None,操作是原地修改列表。

遍历元素

  • 使用for循环遍历列表中的元素。

    1

    lst = [1, 2, 3]

    2

    for elem in lst:

    3

    print(elem)

    返回值:None,只用于遍历和访问元素。

检查元素存在

  • 使用in运算符检查元素是否存在于列表中。

    1

    lst = [1, 2, 3]

    2

    is_in_list = 2 in lst

    3

    print(is_in_list) # 输出: True

    返回值:布尔值,表示元素是否存在。

获取长度

  • 使用len函数获取列表长度。

    1

    lst = [1, 2, 3]

    2

    length = len(lst)

    3

    print(length) # 输出: 3

    返回值:整数,表示列表的长度。

总结

以下是一个包含所有操作的示例代码:

1

lst = [1, 2, 3]

2

3

# 插入元素

4

lst.append(4) # 返回值: None

5

lst.insert(1, 9) # 返回值: None

6

print(lst) # 输出: [1, 9, 2, 3, 4]

7

8

# 删除元素

9

lst.remove(2) # 返回值: None

10

print(lst) # 输出: [1, 9, 3, 4]

11

removed_element = lst.pop() # 返回值: 4

12

print(lst) # 输出: [1, 9, 3]

13

print(removed_element) # 输出: 4

14

15

# 查找元素

16

idx = lst.index(9) # 返回值: 1

17

print(idx) # 输出: 1

18

19

# 更新元素

20

lst[1] = 7 # 返回值: None

21

print(lst) # 输出: [1, 7, 3]

22

23

# 遍历元素

24

for elem in lst:

25

print(elem)

26

27

# 检查元素存在

28

is_in_list = 2 in lst # 返回值: False

29

print(is_in_list) # 输出: False

30

31

# 获取长度

32

length = len(lst) # 返回值: 3

33

print(length) # 输出: 3

好的,下面是栈、队列和哈希表的基础操作、其返回值及如何返回的详细介绍。

二、栈

栈(Stack)是一种后进先出(LIFO,Last In First Out)的数据结构。

基础操作及返回值

  1. 压栈(push
  2. 出栈(pop
  3. 查看栈顶元素(peek
  4. 检查栈是否为空(is_empty

栈的操作示例(使用Python列表模拟):

1

# 初始化栈

2

stack = []

3

4

# 压栈

5

stack.append(1) # 返回值: None

6

stack.append(2) # 返回值: None

7

stack.append(3) # 返回值: None

8

print(stack) # 输出: [1, 2, 3]

9

10

# 出栈

11

top_element = stack.pop() # 返回值: 3

12

print(top_element) # 输出: 3

13

print(stack) # 输出: [1, 2]

14

15

# 查看栈顶元素

16

top_element = stack[-1] # 返回值: 2

17

print(top_element) # 输出: 2

18

19

# 检查栈是否为空

20

is_empty = len(stack) == 0 # 返回值: False

21

print(is_empty) # 输出: False

三、队列

队列(Queue)是一种先进先出(FIFO,First In First Out)的数据结构。

基础操作及返回值

  1. 入队(enqueue
  2. 出队(dequeue
  3. 查看队头元素(peek
  4. 检查队列是否为空(is_empty

队列的操作示例(使用Python的collections.deque):

1

from collections import deque

2

3

# 初始化队列

4

queue = deque()

5

6

# 入队

7

queue.append(1) # 返回值: None

8

queue.append(2) # 返回值: None

9

queue.append(3) # 返回值: None

10

print(queue) # 输出: deque([1, 2, 3])

11

12

# 出队

13

front_element = queue.popleft() # 返回值: 1

14

print(front_element) # 输出: 1

15

print(queue) # 输出: deque([2, 3])

16

17

# 查看队头元素

18

front_element = queue[0] # 返回值: 2

19

print(front_element) # 输出: 2

20

21

# 检查队列是否为空

22

is_empty = len(queue) == 0 # 返回值: False

23

print(is_empty) # 输出: False

四、哈希表

哈希表(Hash Table)是一种通过键(Key)直接访问值(Value)的数据结构。在Python中,哈希表由dict(字典)来实现。

基础操作及返回值

  1. 插入/更新元素(setitem
  2. 删除元素(delitem
  3. 查找元素(getitem
  4. 检查键是否存在(contains
  5. 遍历元素(items

哈希表的操作示例:

1

# 初始化哈希表

2

hash_table = {

3

"apple": 3,

4

"banana": 5,

5

"cherry": 7

6

}

7

8

# 插入/更新元素

9

hash_table["date"] = 9 # 返回值: None

10

hash_table["banana"] = 6 # 返回值: None

11

print(hash_table) # 输出: {'apple': 3, 'banana': 6, 'cherry': 7, 'date': 9}

12

13

# 删除元素

14

del hash_table["cherry"] # 返回值: None

15

print(hash_table) # 输出: {'apple': 3, 'banana': 6, 'date': 9}

16

17

# 查找元素

18

value = hash_table.get("apple") # 返回值: 3

19

print(value) # 输出: 3

20

21

# 检查键是否存在

22

key_exists = "banana" in hash_table # 返回值: True

23

print(key_exists) # 输出: True

24

25

# 遍历元素

26

for key, value in hash_table.items():

27

print(f"Key: {key}, Value: {value}")

28

29

# 获取所有键

30

keys = hash_table.keys() # 返回值: dict_keys(['apple', 'banana', 'date'])

31

print(keys) # 输出: dict_keys(['apple', 'banana', 'date'])

32

33

# 获取所有值

34

values = hash_table.values() # 返回值: dict_values([3, 6, 9])

35

print(values) # 输出: dict_values([3, 6, 9])

五、字符串

拼接

  • 使用 + 运算符或 join 方法。

1

# 使用 + 运算符

2

str1 = "Hello"

3

str2 = "World"

4

result = str1 + " " + str2

5

print(result) # 输出: Hello World

6

7

# 使用 join 方法

8

words = ["Hello", "World"]

9

result = " ".join(words)

10

print(result) # 输出: Hello World

查找

  • 使用 find 或 index 方法。

1

text = "Hello, World!"

2

position = text.find("World")

3

print(position) # 输出: 7

4

5

position = text.index("World")

6

print(position) # 输出: 7

替换

  • 使用 replace 方法。

1

text = "Hello, World!"

2

new_text = text.replace("World", "there")

3

print(new_text) # 输出: Hello, there!

分割

  • 使用 split 方法。

1

text = "apple,banana,cherry"

2

fruits = text.split(",")

3

print(fruits) # 输出: ['apple', 'banana', 'cherry']

去除空白

  • 使用 striplstriprstrip 方法。

1

text = " Hello, World! "

2

stripped_text = text.strip()

3

print(stripped_text) # 输出: Hello, World!

大小写转换

  • 使用 upperlowercapitalizetitleswapcase 方法。

1

text = "hello, world!"

2

print(text.upper()) # 输出: HELLO, WORLD!

3

print(text.lower()) # 输出: hello, world!

4

print(text.capitalize()) # 输出: Hello, world!

5

print(text.title()) # 输出: Hello, World!

6

print(text.swapcase()) # 输出: HELLO, WORLD!

检查前缀/后缀

  • 使用 startswithendswith 方法。

1

text = "Hello, World!"

2

print(text.startswith("Hello")) # 输出: True

3

print(text.endswith("World!")) # 输出: True

格式化

  • 使用 format 方法或 f-string(Python 3.6+)。

1

# 使用 format 方法

2

name = "Alice"

3

age = 30

4

text = "My name is {} and I am {} years old.".format(name, age)

5

print(text) # 输出: My name is Alice and I am 30 years old.

6

7

# 使用 f-string

8

text = f"My name is {name} and I am {age} years old."

9

print(text) # 输出: My name is Alice and I am 30 years old.

六、正则表达式

正则表达式用于模式匹配和文本处理。Python的 re 模块提供了正则表达式支持。

常用正则表达式操作

  1. 匹配(matchsearch
  2. 查找所有(findall
  3. 替换(sub
  4. 分割(split
  5. 编译正则表达式(compile

匹配

  • 使用 match 和 search 方法。

1

import re

2

3

pattern = r"\d+"

4

5

# match 从字符串开始位置匹配

6

result = re.match(pattern, "123abc")

7

if result:

8

print(result.group()) # 输出: 123

9

10

# search 在整个字符串中搜索

11

result = re.search(pattern, "abc123")

12

if result:

13

print(result.group()) # 输出: 123

查找所有

  • 使用 findall 方法。

1

text = "abc123xyz456"

2

pattern = r"\d+"

3

matches = re.findall(pattern, text)

4

print(matches) # 输出: ['123', '456']

替换

  • 使用 sub 方法。

1

text = "abc123xyz456"

2

pattern = r"\d+"

3

new_text = re.sub(pattern, "#", text)

4

print(new_text) # 输出: abc#xyz#

分割

  • 使用 split 方法。

1

text = "one1two2three3four"

2

pattern = r"\d"

3

parts = re.split(pattern, text)

4

print(parts) # 输出: ['one', 'two', 'three', 'four']

编译正则表达式

  • 使用 compile 方法。

1

pattern = re.compile(r"\d+")

2

text = "abc123xyz456"

3

matches = pattern.findall(text)

4

print(matches) # 输出: ['123', '456']

综合示例

1

import re

2

3

# 字符串操作

4

text = " Hello, World! "

5

text = text.strip().replace("World", "there").upper()

6

print(text) # 输出: HELLO, THERE!

7

8

# 正则表达式操作

9

pattern = re.compile(r"\d+")

10

text = "abc123xyz456"

11

matches = pattern.findall(text)

12

print(matches) # 输出: ['123', '456']

13

14

# 替换和分割

15

new_text = re.sub(r"\d+", "#", text)

16

print(new_text) # 输出: abc#xyz#

17

parts = re.split(r"\d", text)

18

print(parts) # 输出: ['abc', '', '', 'xyz', '', '', '']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRTOS学习——FreeRTOS队列(下)之队列创建

本篇文章记录我学习FreeRTOS队列创建的知识。主要分享队列创建需要使用的初始化函数、队列复位函数。 需要进一步了解FreeRTOS队列的相关知识,读者可以参考以下文章: FreeRTOS学习——FreeRTOS队列(上)_freertos 单元素队列-CSDN博…

Spring、SpringMVC、SpringBoot 三者之间是什么关系

Spring、SpringMVC、SpringBoot 是三个独立的框架,它们之间的关系是: 1. Spring是一个Java的轻量级应用框架,提供了基于IoC和AOP的支持,用于构建企业级应用。Spring有多 个模块,包括 Spring Core、Spring Context、Spring JDBC、…

高质量油封选择的重要性

在现代工业和机械系统中,油封的作用至关重要。它们不仅防止润滑剂泄漏,还阻止污染物进入系统,从而保障设备的正常运行。选择高质量的油封对于保证设备性能、延长使用寿命和降低维护成本至关重要。本文将从多个角度探讨选择高质量油封的重要性…

【hackmyvm】Slowman靶机

文章目录 主机探测端口探测FTP匿名登录 目录探测hydra爆破mysql爆破zip------fcrackzip爆破密码-----john提权 主机探测 ┌──(root㉿kali)-[/home/kali] └─# fping -ag 192.168.9.1/24 2>/dev/null 192.168.9.221 主机192.168.9.224 靶机端口探测 ┌──(roo…

送变电乙级资质申请攻略:关键步骤与注意事项

关键步骤: 工商注册与资本核实: 确保企业已正式注册,且注册资金不少于100万元人民币,同时准备企业法人营业执照等相关证明文件。 人员配置与注册: 根据资质要求,配置齐全合理的专业技术人员,包括…

【教程】Linux 安装 kkFileView 文档在线预览项目 及优化

【教程】Linux 安装 kkFileView 文档在线预览项目 官网 kkFileView - 在线文件预览 (keking.cn) 安装包 可以直接下载成品 也可以下载source 源码 自己编译 kkFileView 发行版 - Gitee.com 打开IDEA 然后先clear 再install 然后在 file-online-preview\server\target 目录…

Nginx R31 doc-09-Serving Static Content 静态内容

提供静态内容 配置 NGINX 和 NGINX Plus 以提供静态内容,使用类型特定的根目录,检查文件存在性,并进行性能优化。 本节介绍如何配置 NGINX 和 NGINX Plus 以提供静态内容,如何定义搜索请求文件的路径,如何设置索引文…

WordPress插件Disable WP REST API,可根据是否登录来禁用REST API

前面跟大家分享了代码版禁用WordPress REST API的方法(详见『WordPress4.7以上版本如何禁用JSON REST API?』),不过有些站长不太敢折腾自己的网站代码,那么建议试试这款Disable WP REST API,它可以&#xf…

小结5:朗读练习第二段

五、朗读练习2 2024-5-6始,5-14终,5-15写。 我渐渐体会到一些朗读的乐趣。但我还要考研,要写作业、期末考试。如果是在大一该多好。我可以就这样一天一天的写下去,慢慢地有一些自己的作品,还能录视频发到b站上。 上一篇…

通过修改物理内存实现跨进程内存读写

习一下利用修改物理内存来跨进程内存读写 系统:win10 21h1 x64 编译环境: vs2022 详情见附录 基础 虚拟地址转物理地址 虚拟地址也称线性地址,一个线性地址进程的DirBase地址可以转换成物理地址。先来看线性地址的含义 在x64体系中只实现了48位的virtu…

刀片式服务器的主要组件有哪些?

刀片式服务器是专门为特殊应用行业跟高密度计算环境设计的,是高可用高密度低成本的服务器平台,刀片服务器这个名称主要是根据产品的形状,刀片式服务器的组成单元外形扁平,就像刀片一样,整体设计的比较紧凑,…

C#和C++有什么区别?

C#和C都是广泛使用的编程语言,但它们在设计理念、应用场景和语法上有许多显著的区别。以下是一些关键区别的详细介绍: 1. 设计理念和目的 C: 设计目的:C是一种面向系统编程和应用程序开发的语言,具有高效性和灵活性…

电工杯b题

虽然这次休息不打,但是看了一下,我比较倾向于机器学习灌水(doge

刷题之从前序遍历与中序遍历序列构造二叉树(leetcode)

从前序遍历与中序遍历序列构造二叉树 前序遍历&#xff1a;中左右 中序遍历&#xff1a;左中右 前序遍历的第一个数必定为根节点&#xff0c;再到中序遍历中找到该数&#xff0c;数的左边是左子树&#xff0c;右边是右子树&#xff0c;进行递归即可。 #include<vector>…

Juniper查看并调整策略顺序

1.查看安全策略 >show security policies 顺序就是按照显示出来的顺序&#xff0c;与Index无关&#xff0c;从上到下匹配 2. 调整防火墙策略 #insert security policies from-zone CAMERAS to-zone INTERNET policy CAMERAS-to-NTP before policy CAMERAS-to-INTERNET …

操作系统3_作业与处理机调度

操作系统3_作业与处理机调度 文章目录 操作系统3_作业与处理机调度1. 作业的概念与组成2. 作业的建立及状态3. 处理机调度相关概念3.1 调度级别3.2 调度队列模型3.3 选择准则4. 作业调度与进程调度5. 典型处理机调度算法5.1 先来先服务算法FCFS5.2 短作业优先算法SJF5.3 优先级…

【力扣一轮】字符串异位 数组并集

先验知识记录&#xff1a; 遇到哈希问题&#xff0c;想到三种数据结构&#xff1a; ①数组&#xff1a;适用于哈希值比较小&#xff0c;范围较小&#xff0c; ②set&#xff1a;适用于哈希值较大。 ③map&#xff1a;如果需要用到键值对&#xff0c;则用之。 242.有效的字母…

拨云见日,ATFX七场研讨会揭秘投资先机

财经先机&#xff0c;一手掌握。近期&#xff0c;随着国际金价持续走高&#xff0c;避险情绪高涨&#xff0c;由此激发新一轮投资热潮。作为业界领先的金融创新品牌&#xff0c;ATFX深受投资者认可和信赖&#xff0c;为助力广大投资者了解市场运行规律&#xff0c;捕捉财经脉络…

C++通过读取二进制流的方式来解析PE(静态文件读取法)

步骤解读 先选择文件读取文件二进制流从二进制流读取DOS头&#xff08;DOS_HEADER&#xff09;&#xff0c;长度64字节读取DOS壳&#xff08;DOS_STUB&#xff09;&#xff0c;DOS头开始&#xff0c;长度至到dosHeader->e_lfanew偏移量读取PE标识&#xff08;Signature&…

520节日特别篇:构建浪漫互动网站实战技巧

520节日特别篇&#xff1a;构建浪漫互动网站实战技巧 一、非零分积分资源概览二、基础概念与作用说明HTML5 Canvas & SVGCSS3 动画与过渡JavaScript 动态交互 三、实战代码示例&#xff1a;打造浪漫爱心雨HTML 结构CSS 样式JavaScript 逻辑 四、实际开发应用思路1. 个性化祝…