Python【修炼1】

news2024/11/18 9:24:54

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Python

在这里插入图片描述


目录

  • 👉🏻字典(Dictionary)
  • 👉🏻列表(list)
  • 👉🏻eval函数
  • 👉🏻输出格式
  • 👉🏻字符串内置方法
      • 2. 示例
    • 字符串逆序

👉🏻字典(Dictionary)

Python 中的字典(Dictionary)是一种内置的数据结构,它存储了键值对(key-value pairs)的集合。每个键(key)都是唯一的,并且与某个值(value)相关联。字典对于存储需要快速查找的数据非常有用,比如存储用户信息、配置选项等。

基本概念

  • 键(Key):键必须是唯一的,且必须是=不可变类型,如字符串(str)、数字(int、float、complex 等)或元组(tuple)。列表(list)和字典(dict)等可变类型不能作为键。
  • 值(Value):值可以是任何数据类型,包括列表、字典等可变类型。
  • 创建字典:使用花括号 {}dict() 函数来创建字典。
# 使用花括号创建字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}

# 使用 dict() 函数创建字典
my_dict_2 = dict(name='John', age=30, city='New York')
# 或者使用关键字参数的形式
my_dict_3 = dict([('name', 'John'), ('age', 30), ('city', 'New York')])

常见方法

  1. 访问元素:使用键来访问字典中的值。
print(my_dict['name'])  # 输出: John
  1. 添加元素:如果键不存在,则添加新键值对;如果键已存在,则更新该键对应的值。
my_dict['email'] = 'john@example.com'  # 添加新键值对
my_dict['age'] = 31  # 更新现有键的值
  1. 删除元素:使用 del 语句或 pop() 方法来删除字典中的元素。
del my_dict['email']  # 删除键为 'email' 的元素
print(my_dict.pop('age', 'Key not found'))  # 删除键为 'age' 的元素,并返回其值;如果键不存在,则返回 'Key not found'
  1. 遍历字典

    • 遍历键(keys):
    for key in my_dict.keys():
        print(key)
    
    • 遍历值(values):
    for value in my_dict.values():
        print(value)
    
    • 遍历键值对(items):
    for key, value in my_dict.items():
        print(key, value)
    
  2. get() 方法:使用键来获取值,如果键不存在,可以返回指定的默认值,而不是抛出 KeyError。

print(my_dict.get('email', 'Not found'))  # 输出: Not found
  1. update() 方法:使用另一个字典中的键值对来更新当前字典。
new_info = {'email': 'john@newdomain.com', 'job': 'Engineer'}
my_dict.update(new_info)
print(my_dict)
  1. len() 函数:获取字典中键值对的数量。
print(len(my_dict))
  1. 字典推导式:一种简洁的方式来创建或修改字典。
# 创建一个新字典,其键和值都是原字典值的平方
squared_dict = {key: value**2 for key, value in my_dict.items() if isinstance(value, int)}

👉🏻列表(list)

Python中的list(列表)是一种基本的数据结构,用于存储一系列的元素。这些元素可以是不同类型的数据,比如整数、浮点数、字符串、甚至是另一个列表(即列表的嵌套)。列表是可变的,意味着你可以在创建列表之后添加、删除或修改其中的元素。

基本概念

  • 索引:列表中的每个元素都有一个索引(或位置),索引从0开始。
  • 切片:通过指定起始索引和结束索引(可选),可以获取列表中的一部分元素。
  • 嵌套:列表可以包含其他列表作为元素,这允许创建多维数据结构。

创建列表

  • 使用方括号[]和逗号,来创建列表。
my_list = [1, 2.5, 'hello', [10, 20]]

常见方法

  1. append(x):在列表末尾添加一个元素。
my_list.append(3)
  1. extend(iterable):将另一个可迭代对象(如列表)的所有元素添加到列表的末尾。
my_list.extend([4, 5])
  1. insert(i, x):在指定位置i插入元素x
my_list.insert(1, 1.5)
  1. remove(x):移除列表中第一个出现的元素x。如果元素不存在,将抛出ValueError
my_list.remove(2.5)
  1. pop([i]):移除并返回列表中的指定位置i的元素。如果不指定i,则默认移除并返回最后一个元素
last_element = my_list.pop()
second_element = my_list.pop(1)
  1. index(x):返回列表中元素x的第一个出现的索引。如果元素不存在,将抛出ValueError
index = my_list.index('hello')
  1. count(x):返回列表中元素x出现的次数。
count = my_list.count(1)
  1. sort(*, key=None, reverse=False):对列表进行就地排序。可选参数key用于指定一个函数,该函数会在每个元素上调用以提取用于比较的键;reverseTrue时表示降序排序。
my_list.sort(reverse=True)
  1. reverse():将列表中的元素反向排列。
my_list.reverse()
  1. copy():返回列表的一个浅拷贝。
new_list = my_list.copy()
  1. 列表推导式:一种简洁的构建列表的方式,通过表达式和循环来生成列表。
squares = [x**2 for x in range(10)]

注意事项

  • 列表是可变的,意味着你可以修改其元素。
  • 列表的索引越界(即访问不存在的索引)将抛出IndexError
  • 列表的切片操作返回一个新的列表,而不是修改原列表。
  • 列表的sort()reverse()方法会就地修改列表,即直接修改原列表而不是返回新列表。

👉🏻eval函数

eval 函数是 Python 中的一个内置函数,它允许一个字符串表达式被解析为 Python 表达式,并计算其值。简单来说,eval 可以执行一个字符串表达式,并返回表达式的值。这个函数在处理动态表达式、从字符串中读取和执行代码等场景中非常有用,但也因为安全性问题(比如执行恶意代码)而需要谨慎使用。

基本用法

result = eval(expression, globals=None, locals=None)
  • expression:一个字符串表达式,表示要计算的 Python 表达式。
  • globals(可选):一个字典,指定全局变量。如果未提供,则使用当前的全局符号表。
  • locals(可选):一个字典,指定局部变量。如果未提供,则使用当前局部符号表。

示例

x = 5
expr = "x + 3"
result = eval(expr)
print(result)  # 输出: 8

# 使用 globals 和 locals
y = 10
globals_dict = {'x': 2}
locals_dict = {'y': 5}
result = eval('x + y', globals=globals_dict, locals=locals_dict)
print(result)  # 输出: 7,因为这里使用了指定的 globals 和 locals

安全性问题

尽管 eval 函数功能强大,但它也带来了安全风险。如果你执行的字符串来自不受信任的源(如用户输入),恶意用户可能会构造表达式来执行不希望执行的代码,如删除文件、访问敏感数据等。

为了避免这种风险,有几种替代方案可以考虑:

  • 使用 ast.literal_eval():这个函数用于安全地评估一个字符串表达式,但它只能处理 Python 字面量表达式,不能执行任意代码。
  • 自定义解析器:如果可能,编写一个专门解析你需要的特定格式的字符串的解析器,这样可以避免执行任意代码的风险。
  • 限制环境:如果你必须使用 eval,尝试通过限制 globalslocals 字典来限制其能访问的变量和函数。

👉🏻输出格式

在 Python 中,输出格式可以通过多种方式实现,类似于 C 语言的 printf。以下是几种常用的方法来格式化输出整数和小数。

  1. 使用 print() 函数

直接输出

x = 10
y = 3.14159

print("整数:", x)
print("小数:", y)

字符串格式化

a. 使用 % 操作符
类似于 C 语言的 printf,可以使用 % 来格式化输出:

print("整数: %d" % x)        # 输出整数
print("小数: %.2f" % y)     # 输出小数,保留两位小数

b. 使用 str.format()

print("整数: {}".format(x))          # 输出整数
print("小数: {:.2f}".format(y))     # 输出小数,保留两位小数

c. 使用 f-string(Python 3.6 及以上)

print(f"整数: {x}")                 # 输出整数
print(f"小数: {y:.2f}")            # 输出小数,保留两位小数

  • {:}:简单输出值。

数字格式

  1. 整数格式

    • {:d}:十进制整数。
    • {:b}:二进制整数。
    • {:o}:八进制整数。
    • {:x}:十六进制小写字母。
    • {:X}:十六进制大写字母。
  2. 浮点数格式

    • {:f}:浮点数,默认保留6位小数。
    • {:e}:科学计数法(小写)。
    • {:E}:科学计数法(大写)。
    • {:g}:根据值自动选择 fe 格式。
    • {:G}:根据值自动选择 FE 格式。

精度和宽度

  • 宽度:可以在冒号前指定宽度,例如 {:10} 表示宽度为 10。
  • 精度:在点(.)后指定精度,例如 {:0.2f} 表示浮点数保留2位小数。

对齐方式

  • <:左对齐。
  • >:右对齐(默认)。
  • ^:居中对齐。

填充字符

  • 可以在宽度前指定填充字符,例如 {:0>5} 表示用零填充到宽度5。

组合使用示例

x = 42
y = 3.14159

# 整数格式化
print(f"十进制: {x:d}")
print(f"二进制: {x:b}")
print(f"八进制: {x:o}")
print(f"十六进制(小写): {x:x}")
print(f"十六进制(大写): {x:X}")

# 浮点数格式化
print(f"浮点数: {y:f}")
print(f"科学计数法(小写): {y:e}")
print(f"科学计数法(大写): {y:E}")
print(f"自动选择格式: {y:g}")

# 指定宽度和对齐
print(f"右对齐: {x:>5}")       # 右对齐,宽度为 5
print(f"左对齐: {x:<5}")        # 左对齐,宽度为 5
print(f"居中对齐: {x:^5}")      # 居中对齐,宽度为 5
print(f"零填充: {x:0>5}")       # 用 0 填充,宽度为 5

# 浮点数指定精度
print(f"保留两位小数: {y:.2f}")
print(f"保留四位小数: {y:.4f}")

其他格式选项

  • 千分位分隔符:使用 , 选项,例如 {:,.2f} 输出带有千分位的浮点数。
  • 百分比:使用 % 选项,例如 {:,.2%} 输出为百分比并保留两位小数。

👉🏻字符串内置方法

在 Python 中,字符串有许多内置方法,可以帮助你处理和操作字符串。以下是一些常用的字符串内置方法:

  1. 字符串方法
  • str.capitalize(): 将字符串的首字母大写,其余小写。

    s = "hello world"
    print(s.capitalize())  # Output: Hello world
    
  • str.upper(): 将所有字母转换为大写。

    print(s.upper())  # Output: HELLO WORLD
    
  • str.lower(): 将所有字母转换为小写。

    print(s.lower())  # Output: hello world
    
  • str.title(): 将每个单词的首字母大写。

    print(s.title())  # Output: Hello World
    
  • str.strip([chars]): 去掉字符串两端的空格或指定字符。

    s = "  hello  "
    print(s.strip())  # Output: hello
    
  • str.split([sep]): 将字符串按指定分隔符分割成列表。

    s = "a,b,c"
    print(s.split(','))  # Output: ['a', 'b', 'c']
    
  • str.join(iterable): 将可迭代对象中的字符串用指定字符串连接。

    lst = ['a', 'b', 'c']
    print(','.join(lst))  # Output: a,b,c
    
  • str.replace(old, new[, count]): 替换字符串中的指定子串。

    s = "hello world"
    print(s.replace("world", "Python"))  # Output: hello Python
    
  • str.find(sub[, start[, end]]): 返回子串在字符串中首次出现的索引,未找到返回 -1。

    print(s.find("world"))  # Output: 6
    
  • str.startswith(prefix[, start[, end]]): 检查字符串是否以指定前缀开头。

    print(s.startswith("hello"))  # Output: True
    
  • str.endswith(suffix[, start[, end]]): 检查字符串是否以指定后缀结尾。

    print(s.endswith("world"))  # Output: True
    
  • str.count(sub[, start[, end]]): 计算子串在字符串中出现的次数。

    print(s.count("o"))  # Output: 2
    
  • str.isdigit(): 检查字符串是否只包含数字。

    print("123".isdigit())  # Output: True
    
  • str.isalpha(): 检查字符串是否只包含字母。

    print("abc".isalpha())  # Output: True
    
  • str.isalnum(): 检查字符串是否只包含字母和数字。

    print("abc123".isalnum())  # Output: True
    

2. 示例

下面是一个综合示例,展示如何使用这些方法:

s = "  Python Programming  "
print(s.strip().upper())  # Output: PYTHON PROGRAMMING
print(s.split())           # Output: ['Python', 'Programming']
print(', '.join(['Hello', 'World']))  # Output: Hello, World
print(s.replace("Python", "Java"))     # Output:   Java Programming  
print(s.find("Programming"))            # Output: 9

字符串逆序

在 Python 中,可以使用切片轻松逆序字符串。以下是示例:

s = "hello"
reversed_s = s[::-1]
print(reversed_s)  # Output: olleh

如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

k8s前置准备:配置虚拟机网络

目录 前言查看本机ip地址修改虚拟机配置修改linux配置配置其余linux机器的网络参考文献 前言 本文的最终目的是使虚拟机内可以访问互联网&#xff0c;虚拟机之间可以互相访问。 虚拟机使用的是vmware&#xff0c;环境是windows&#xff0c;虚拟镜像是linux系统。 使用桥接模式…

视频去水印 —— 释放创意,让学习与创作更自由!

&#x1f31f; 视频去水印 —— 释放创意&#xff0c;让学习与创作更自由&#xff01; 在这个短视频盛行的时代&#xff0c;抖音、快手、小红书等平台成为了创意与灵感的聚集地。你是否曾遇到过想要学习或进行二次创作&#xff0c;却被视频中的水印所困扰&#xff1f;现在&…

Spring Cloud Alibaba-(3)OpenFeign【服务调用】

Spring Cloud Alibaba-&#xff08;1&#xff09;搭建项目环境 Spring Cloud Alibaba-&#xff08;2&#xff09;Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-&#xff08;3&#xff09;OpenFeign【服务调用】 Spring Cloud Alibaba-&#xff08;4&#xff09;Sen…

SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents论文学习

首先是惯例强调一下自己的工作是基于视觉的&#xff0c;不是那种拿一个html文件或者UI结构树给模型让他操作的工作。然后提出了一个很有意思的观点&#xff0c;认为Grounding能力&#xff08;定位能力&#xff09;对模型表现的影响非常大。 主要novelty就这几个&#xff1a; …

Python 解析 html

一、场景分析 假设有如下 html 文档&#xff1a; 写一段 python 脚本&#xff0c;解析出里面的数据&#xff0c;包括经度维度。 <div classstorelist><ul><li lng"100.111111" lat"10.111111"><h4>联盟店1</h4><p>…

单片机带隙电压基准电路

单片机带隙电压基准电路 一、带隙电压基准电路概述 带隙电压基准电路在单片机中占据着至关重要的地位。它能够为各种模拟集成电路提供稳定的参考电压&#xff0c;确保电路的正常运行。例如&#xff0c;在高精度的比较器中&#xff0c;带隙电压基准电路可以提供一个精确的参考…

电源芯片测试系统如何完成欠压关断/欠压关断滞后?

电源芯片欠压关断测试原理&#xff1a; 在测试芯片的欠压关断过程中我们会测试到芯片的启动电压和欠压关断滞后电压&#xff0c;所以这三个指标可以一起进行测量;而测试这些指标我们需要一台电源和数字万用表。 电源芯片欠压关断的测试需要将电源的接入芯片进行供电&#xff…

稳定为恒定功率负载供电的 DC/DC 转换器

恒定功率负载 (CPL) 存在于电动汽车、电信设备、电力电子设备等各种应用中。这些 CPL 是无论施加的电压或电流如何变化都保持恒定功耗的电气负载。与呈现恒定电阻的电阻负载不同&#xff0c;CPL 具有随电压或电流变化而变化的动态阻抗&#xff0c;即&#xff0c;当负载两端的电…

Vue的工程化和element快速入门

vue项目的创建&#xff1a; vue项目的启动方式&#xff1a; vue项目开发流程&#xff1a; 代码示例&#xff1a; <!-- <script>//写数据export default{data(){return{msg: 上海}}} </script> --><script setup>import {ref} from vue;//调用ref函数&…

网页护眼宝——全方位解析 Chrome Dark Reader 插件

网页护眼宝——全方位解析 Chrome Dark Reader 插件 1. 基本介绍&#xff1a;Chrome 插件的力量与 Dark Reader 的独特之处 随着现代浏览器的功能越来越强大&#xff0c;Chrome 插件为用户提供了极大的定制化能力。从广告屏蔽、性能优化到页面翻译&#xff0c;Chrome 插件几乎…

python如何匹配换行符

如下所示&#xff1a; p1 r(?<<div class"ds_cr">)(.*?)(?<div id"pageurl">) #这样采集html时出错&#xff0c;采集不到数据&#xff0c;正则中.是不能匹配 换行符&#xff0c;改成如下&#xff1a; p1 r(?<<div class"d…

Nanite缺失项目设置问题

今天新建虚幻引擎项目时 , 编辑器右下角收到这个提示 , 缺失项目设置&#xff01; 使用Nanite资产需要Shader Model 6&#xff08;SM6&#xff09;。请在此启用&#xff1a; 项目设置-> 平台-> Windows->D3D12目标着色器格式如未启用&#xff0c;Nanite资产将无法正常…

【研赛F题成品论文】24华为杯数学建模研赛F题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛F题精品成品论文已出&#xff01; F 题 X射线脉冲星光子到达时间建模 摘要 X射线脉冲星具有高度稳定的自转周期&#xff0c;被广泛应用于深空导航和时间基准的维护。本文针对Crab脉冲星&#xff0c;建立了光子到达时间的数学模型&#xff0c;并模…

初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 引言 前面我们学习MySQL数据库时&#xff0c;创建表之后&#xff0c;会在表中插入数据&#xff0c;在需要的时候&#xff0c;也会进行…

Qt-QComboBox输入类控件(31)

目录 描述 核心方法 核心信号 使用 代码方式 界面操作方式 动态使用 如何看待输入输出 String与QString互相转化 描述 一个可以下拉的输入框 核心方法 addItem(constQString&)添加⼀个条⽬currentIndex()获取当前条⽬的下标 从0开始计算.如果当前没有条⽬被选中…

MySQL的msi版本9.0在安装过程总结和需要注意的地方

下载 参考文档 [官方包快速下载]&#xff08;https://dev.mysql.com/downloads/mysql/&#xff09; 使用zip文件安装可参考&#xff0c;这种直接把zip安装包解压到想要放的地方&#xff0c;并安装其中的方式一步步修改数据地址等配置即可。 个人使用了msi的安装文件 msi版本…

Vue3:快速生成模板代码

目录 一.模板代码 1.提供基础结构 2.定义组件名称 3.初始化数据和方法 4.应用样式 5.提高开发效率 二.操作 1.点击右下角设置按钮选择代码片段 2.输入vue.json&#xff0c;打开vue.json文件 3.构造模板 4.模板代码 5.使用 6.效果 一.模板代码 Vue3快速生成模板代…

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

为什么越来越多的视频监控AI分析做到了摄像头上?

在安防行业&#xff0c;视频监控已经非常广泛&#xff0c;是无可替代的基础信息化设施。早期的视频监控只是简单的通过摄像机对画面进行记录&#xff0c;然后通过记录的画面服务入侵探测和震慑burglars。随着近年来人工智能技术的兴起&#xff0c;人们越来越希望利用AI计算机的…

【Go】Go 环境下载与安装教程(Windows系统)

引言 Go&#xff0c;也被称为Golang&#xff0c;是一种静态类型&#xff0c;编译型的编程语言&#xff0c;由Google设计和开发。Go语言的设计目标是“解决软件开发中的一些问题”&#xff0c;特别是在大规模软件系统的构建和维护方面。 下载安装包 打开官网下载页面&#xff…