字符串、列表、元组、字典

news2025/4/9 9:04:01

字符串

  • 双引号或者单引号中的数据,就是字符串
字符串输入
之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;
注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存。
#字符串
name = "Hello Python"
print(name)
#字符串输入
username = input("请输入姓名:")
print(username)

列表

append()    在列表的末尾添加一个元素
clear()    删除列表中的所有元素
copy()    返回列表的副本
count()    返回具有指定值的元素数量。
extend()    将列表元素(或任何可迭代的元素)添加到当前列表的末尾
index()    返回具有指定值的第一个元素的索引
insert()    在指定位置添加元素
pop()    删除指定位置的元素
remove()    删除具有指定值的项目
reverse()    颠倒列表的顺序
sort()    对列表进行排序

len(list)列表元素个数
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将元组转换为列表

x in s  如果 s 中的某项等于 x 则结果为 True,否则为 False
x not in s  如果 s 中的某项等于 x 则结果为 False,否则为 True

#列表初始化
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
#列表的遍历
#print(namesList[0])
#print(namesList[1])
#print(namesList[2])
print(namesList) #['xiaoWang', 'xiaoZhang', 'xiaoHua']
#s 从 i 到 j 的切片
print(namesList[0:1]) #['xiaoWang']
#del s[i:j:k]从列表中移除 s[i:j:k] 的元素
print(namesList[0:1:2]) #['xiaoWang']
del namesList[0:1:2]
print(namesList[0:1:2]) #['xiaoZhang']
#使用for循环
# for name in namesList:
#     #print(name)
#     print("")
#使用while循环
len = len(namesList)
i = 0
# while i < len:
#     print(namesList[i])
#     i+=1
#添加元素
#通过append可以向列表添加元素
namesList.append("xiaoLi")
print(namesList) #['xiaoZhang', 'xiaoHua', 'xiaoLi']
# for name in namesList:
#     print(name)
print("-----------")
#删除最后一个元素
namesList.pop()
# for name in namesList:
#     print(name)
print(namesList) #['xiaoZhang', 'xiaoHua']
print("-----------")
#根据元素的值进行删除
namesList.remove("xiaoZhang")
# for name in namesList:
#     print(name)
print(namesList) #['xiaoHua']
#添加集合
#通过extend可以将另一个集合中的元素逐一添加到列表中
namesList.extend(namesList)
#返回具有指定值的元素数量
print(namesList.count("xiaoLi")) # 0
print(namesList.count("xiaoHua"))# 2
# for name in namesList:
#     print(name)

print("-----------")
#删除列表中的所有元素
namesList.clear()
namesList = [1,8,1,3,3,4,5,7]
#求和
print(sum(namesList))     # 输出:32
#对列表进行排序
namesList.sort()
print(namesList)#[1, 1, 3, 3, 4, 5, 7, 8]
# for s in namesList:
#     print(s)
#颠倒列表的顺序
namesList.reverse()
print("-----------")
# for s in namesList:
#     print(s)
print(namesList) #[8, 7, 5, 4, 3, 3, 1, 1]
print("-----------")
#如果 s 中的某项等于 x 则结果为 True,否则为 False
print(1 in namesList)#True
print(10 in namesList) #False
print("-----------")
#如果 s 中的某项等于 x 则结果为 False,否则为 True
print(10 not in namesList) #True
print(1 not in namesList) #False
print("-----------")
print(namesList)# [8, 7, 5, 4, 3, 3, 1, 1]
print("-----------")
#s的最小项
print(min(namesList)) #1
#s 的最大项
print(max(namesList))# 8
#x 在 s 中出现的总次数
print(namesList.count(1))# 2
#在由 i 给出的索引位置将 x 插入 s (等同于 s[i:i] = [x])
namesList.insert(5, 5)
print(namesList) #[8, 7, 5, 4, 3, 5, 3, 1, 1]


#字符串
name = "Hello Python"
print(name)
#字符串输入
username = input("请输入姓名:")
print(username)

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
print(tup1) #('physics', 'chemistry', 1997, 2000)
print(tup2) #(1, 2, 3, 4, 5)
print(tup3) #('a', 'b', 'c', 'd')

#list转元组
lst = [1, 2, 3]
tup = tuple(lst)
print(tup)  # 输出:(1, 2, 3)
#字符串转元组
s = "Python"
tup2 = tuple(s)
print(tup2)  # 输出:('P', 'y', 't', 'h', 'o', 'n')
#元组中的元素可以通过索引访问,索引从0开始。
print(tup2[0]) #P
#负索引从-1开始,表示从末尾向前数。
print(tup2[-2]) #o
#元组可以使用 + 操作符合并
tup1 = (1, 2, 3)
tup2 = (4, 5, 6)
tup3 = tup1 + tup2
print(tup3)  # 输出:(1, 2, 3, 4, 5, 6)
# 使用 * 操作符重复
tup4 = tup1 * 3
print(tup4)  # 输出:(1, 2, 3, 1, 2, 3, 1, 2, 3)
tup = (1, 2, 3, 4, 5)
#可以使用 in 和 not in 操作符检查元素是否存在于元组中
print(3 in tup)     # 输出:True
print(6 not in tup) # 输出:True

tup = (1, 2, 3, 4, 5)
# 返回元组的长度
print(len(tup))     # 输出:5
# 返回元组中的最大值
print(max(tup))     # 输出:5
# 返回元组中的最小值
print(min(tup))     # 输出:1
#返回元组中所有元素的和(适用于数字元组)
print(sum(tup))     # 输出:15
#返回元组的排序副本(结果为列表)
print(sorted(tup))  # 输出:[1, 2, 3, 4, 5]
#返回元素 x 在元组中出现的次数。
print(tup.count(1)) # 1
# 返回元素 x 在元组中第一次出现的索引
print(tup.index(2)) # 1
#由于元组是不可变的,因此可以用作字典的键。而列表是可变的,不能用作字典的键。
d = {(1, 2): "a", (3, 4): "b"}
print(d[(1, 2)])  # 输出:"a"
print(d[(3, 4)])  # 输出:"b"
#元组常用于传递函数的多个参数。函数可以接受元组作为参数,并解包元组中的元素
def func(a, b, c):
    print(a, b, c)
tup = (1, 2, 3)
func(*tup)  # 输出:1 2 3
#元组常用于函数返回多个值。函数可以返回一个元组,并在调用时解包返回的元组。
def func():
    return 1, 2, 3
a, b, c = func()
print(a, b, c)  # 输出:1 2 3
#元组可以存储不同类型的元素,常用于固定结构的数据。例如,一个包含名称、年龄和地址的元组。
person = ("John", 25, "1234 Elm St")
name, age, address = person
print(f"Name: {name}, Age: {age}, Address: {address}")# 输出:Name: John, Age: 25, Address: 1234 Elm St
#元组的优点
#不可变性:元组的不可变性使得它们在多线程环境中是安全的,可以避免数据竞争
tup = (1, 2, 3)
# 无法修改元组中的元素
# tup[0] = 10  # 这行代码会引发错误 TypeError: 'tuple' object does not support item assignment
# 性能:元组的创建和访问速度比列表快,因为它们是不可变的,不需要额外的内存开销
import timeit
t1 = timeit.timeit("(1, 2, 3)", number=1000000)
t2 = timeit.timeit("[1, 2, 3]", number=1000000)
print(f"元组创建时间: {t1}")
print(f"列表创建时间: {t2}")
#哈希特性:元组可以作为字典的键,因为它们是不可变的,这在某些数据结构中非常有用
d = { (1, 2): "a", (3, 4): "b" }
print(d[(1, 2)])  # 输出:"a"
#元组的缺点
#不可变性:虽然不可变性是一个优点,但在需要修改元素的情况下,它可能成为一个限制
#功能限制:与列表相比,元组不支持许多列表的方法,例如 append()、remove() 等,这在某些操作中可能不方便
lst = [1, 2, 3]
lst.append(4)
print(lst)  # 输出:[1, 2, 3, 4]
tup = (1, 2, 3)
#tup.append(4)  # 这行代码会引发错误  AttributeError: 'tuple' object has no attribute 'append'
#元组使用场景
#元组常用于存储不同类型的数据,例如数据库记录。一条记录的不同字段可以用元组存储
record = ("John Doe", 30, "Engineer")
name, age, profession = record
print(f"Name: {name}, Age: {age}, Profession: {profession}")# 输出:Name: John Doe, Age: 30, Profession: Engineer
#在某些情况下,配置项可以用元组存储,因为它们是不可变的,不会被意外修改
config = (800, 600)
# config[0] = 1024  # 这行代码会引发错误
print(config)  # 输出:(800, 600)
#在多线程环境中,使用元组可以避免数据竞争和修改问题
import threading
def worker(data):
    print(data)
data = (1, 2, 3)
threads = [threading.Thread(target=worker, args=(data,)) for _ in range(5)]
for t in threads:
    t.start()
for t in threads:
    t.join()
#嵌套元组 元组可以包含其他元组作为元素,这使得它们可以用于表示复杂的数据结构
nested_tup = (1, (2, 3), (4, (5, 6)))
print(nested_tup[1])  # 输出:(2, 3)
print(nested_tup[2][1])  # 输出:(5, 6)
#元作为数据表 在处理数据库或表格数据时,元组常用于表示行数据
rows = [
    (1, "John", "Doe"),
    (2, "Jane", "Smith"),
    (3, "Emily", "Jones")
]
for row in rows:
    print(row)
# 输出:
# (1, "John", "Doe")
# (2, "Jane", "Smith")
# (3, "Emily", "Jones")
# 多变量交换
# 元组可以用于交换多个变量的值,而不需要临时变量。
# 嵌套元组元组作为数据表多变量交换
a, b = 1, 2
a, b = b, a
print(a, b)  # 输出:2 1


与列表的比较
1、不可变性:元组是不可变的,而列表是可变的
2、性能:元组的性能通常比列表好,因为它们不需要额外的内存开销
3、功能:列表有更多的方法和操作符,例如 append()、remove() 等
与集合的比较
1、顺序:元组是有序的,而集合是无序的
2、不可变性:元组是不可变的,而集合是可变的
3、重复元素:元组允许重复元素,而集合不允许重复元素

字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

#键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
from email.policy import default
from functools import cmp_to_key

tinydict = {'a': 1, 'b': 2, 'b': '3'}
print(tinydict['b']) #3
print(tinydict)# {'a': 1, 'b': '3'}

tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(tinydict['Name']) #Zara
print(tinydict['Age']) #7
#如果用字典里没有的键访问数据,会输出错误如下:
#print(tinydict['Age1']) #KeyError: 'Age1'

#修改字典 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
tinydict['Age'] = 18
print(tinydict['Age']) #18
#删除字典元素 能删单一的元素也能清空字典,清空只需一项操作
del tinydict['Name']  # 删除键是'Name'的条目
print(tinydict)
tinydict.clear()  # 清空字典所有条目
print(tinydict) #{}
#不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First','Class': 'Last'}
print(tinydict)
#键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
#tinydict = {['Name']: 'Zara', 'Age': 7}
#print(tinydict['Name']) #TypeError: unhashable type: 'list'
tinydict.clear()
tinydict = {'a': 1, 'b': 2, 'b': '3'}
#计算字典元素个数,即键的总数。
print(len(tinydict))#2
#输出字典可打印的字符串表示。
print(str(tinydict))#{'a': 1, 'b': '3'}
#返回输入的变量类型,如果变量是字典就返回字典类型。
print(type(tinydict))#<class 'dict'>
#以列表返回可遍历的(键, 值) 元组数组
print(tinydict.items())#dict_items([('a', 1), ('b', '3')])
#以列表返回一个字典所有的键
print(tinydict.keys())#dict_keys(['a', 'b'])
#以列表返回一个字典所有的键
print(tinydict.values())#dict_values([1, '3'])
#d.popitem()随机从字典中取出一个键值对,以元组(key, value)形式返回。取出后从字典中删除这个键值对。
print(tinydict.popitem())#('b', '3')
print(tinydict)#{'a': 1}
tinydict1 = {'a','3'}
#把字典dict2的键/值对更新到dict里
tinydict = {'Name': 'Zara', 'Age': 7}
tinydict2 = {'Sex': 'female' }
tinydict.update(tinydict2)
print ("Value : %s" %  tinydict)#Value : {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}

Python字符串、元组、列表、字典互相转换的方法

#1、字典
dict = {'name': 'Zara', 'age': 7, 'class': 'First'}
#字典转为字符串,返回:<type 'str'> {'age': 7, 'name': 'Zara', 'class': 'First'}
print(type(str(dict)), str(dict))
#字典可以转为元组,返回:('age', 'name', 'class')
print(tuple(dict))
#字典可以转为元组,返回:(7, 'Zara', 'First')
print(tuple(dict.values()))
#字典转为列表,返回:['age', 'name', 'class']
print(list(dict))
#字典转为列表
print(dict.values)
#2、元组
tup=(1, 2, 3, 4, 5)
#元组转为字符串,返回:(1, 2, 3, 4, 5)
print(tup.__str__())
#元组转为列表,返回:[1, 2, 3, 4, 5]
list1 = list(tup)
print(list1)
#元组不可以转为字典
#3、列表
nums=[1, 3, 5, 7, 8, 13, 20];
#列表转为字符串,返回:[1, 3, 5, 7, 8, 13, 20]
print(str(nums))
#列表转为元组,返回:(1, 3, 5, 7, 8, 13, 20)
print(tuple(nums))
#列表不可以转为字典
#4、字符串
#字符串转为元组,返回:(1, 2, 3)
print(tuple(eval("(1,2,3)")))
#字符串转为列表,返回:[1, 2, 3]
print(list(eval("(1,2,3)")))
#字符串转为字典,返回:<type 'dict'>
print(type(eval("{'name':'ljq', 'age':24}")))

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

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

相关文章

车载诊断架构 --- 整车重启先后顺序带来的思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

【C++11(下)】—— 我与C++的不解之缘(三十二)

前言 随着 C11 的引入&#xff0c;现代 C 语言在语法层面上变得更加灵活、简洁。其中最受欢迎的新特性之一就是 lambda 表达式&#xff08;Lambda Expression&#xff09;&#xff0c;它让我们可以在函数内部直接定义匿名函数。配合 std::function 包装器 使用&#xff0c;可以…

Windows 10/11系统优化工具

家庭或工作电脑使用时间久了&#xff0c;会出现各种各样问题&#xff0c;今天给大家推荐一款专为Windows 10/11系统设计的全能优化工具&#xff0c;该软件集成了超过40项专业级实用程序&#xff0c;可针对系统性能进行深度优化、精准调校、全面清理、加速响应及故障修复。通过系…

浅谈在HTTP中GET与POST的区别

从 HTTP 报文来看&#xff1a; GET请求方式将请求信息放在 URL 后面&#xff0c;请求信息和 URL 之间以 &#xff1f;隔开&#xff0c;请求信息的格式为键值对&#xff0c;这种请求方式将请求信息直接暴露在 URL 中&#xff0c;安全性比较低。另外从报文结构上来看&#xff0c…

LightRAG实战:轻松构建知识图谱,破解传统RAG多跳推理难题

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 2025防失业预警&#xff1a;不会用DeepSeek-RAG建知识库的人正在被淘汰_deepseek-embedding-CSDN博客 从PDF到精准答案&#xff1a;Coze…

C++多线程编码二

1.lock和try_lock lock是一个函数模板&#xff0c;可以支持多个锁对象同时锁定同一个&#xff0c;如果其中一个锁对象没有锁住&#xff0c;lock函数会把已经锁定的对象解锁并进入阻塞&#xff0c;直到多个锁锁定一个对象。 try_lock也是一个函数模板&#xff0c;尝试对多个锁…

垃圾回收——三色标记法(golang使用)

三色标记法(tricolor mark-and-sweep algorithm)是传统 Mark-Sweep 的一个改进&#xff0c;它是一个并发的 GC 算法&#xff0c;在Golang中被用作垃圾回收的算法&#xff0c;但是也会有一个缺陷&#xff0c;可能程序中的垃圾产生的速度会大于垃圾收集的速度&#xff0c;这样会导…

Windows环境下开发pyspark程序

Windows环境下开发pyspark程序 一、环境准备 1.1. Anaconda/Miniconda&#xff08;Python环境&#xff09; 如果不怕包的版本管理混乱&#xff0c;可以直接使用已有的Python环境。 需要安装anaconda/miniconda&#xff08;python3.8版本以上&#xff09;&#xff1a;Anaconda…

SSM婚纱摄影网的设计

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 SS…

1110+款专业网站应用程序UI界面设计矢量图标figma格式素材 Icon System | 1,100+ Icons Easily Customize

1110款专业网站应用程序UI界面设计矢量图标figma格式素材 Icon System | 1,100 Icons Easily Customize 产品特点 — 24 x 24 px 网格大小 — 2px 线条描边 — 所有形状都是基于矢量的 — 平滑和圆角 — 易于更改颜色 类别 &#x1f6a8; 警报和反馈 ⬆️ 箭头 &…

Llama 4 家族:原生多模态 AI 创新的新时代开启

0 要点总结 Meta发布 Llama 4 系列的首批模型&#xff0c;帮用户打造更个性化多模态体验Llama 4 Scout 是有 170 亿激活参数、16 个专家模块的模型&#xff0c;同类中全球最强多模态模型&#xff0c;性能超越以往所有 Llama 系列模型&#xff0c;能在一张 NVIDIA H100 GPU 上运…

正则表达式(Regular Expression,简称 Regex)

一、5w2h&#xff08;七问法&#xff09;分析正则表达式 是的&#xff0c;5W2H 完全可以应用于研究 正则表达式&#xff08;Regular Expressions&#xff09;。通过回答 5W2H 的七个问题&#xff0c;我们可以全面理解正则表达式的定义、用途、使用方法、适用场景等&#xff0c…

JMeter脚本录制(火狐)

录制前准备&#xff1a; 电脑&#xff1a; 1、将JMeter证书导入&#xff0c;&#xff08;bin目录下有一个证书&#xff0c;需要安装这个证书到电脑中&#xff09; 2、按winr&#xff0c;输入certmgr.msc&#xff0c;打开证书&#xff0c;点击下一步&#xff0c;输入JMeter证书…

基于SpringBoot的“高校社团管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“高校社团管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 总体功能结构图 局部E-R图 系统首页页面 用户…

C# Winform 入门(3)之尺寸同比例缩放

放大前 放大后 1.定义当前窗体的宽度和高度 private float x;//定义当前窗体的宽度private float y;//定义当前窗台的高度 2.接收当前窗体的尺寸大小 x this.Width;//存储原始宽度ythis.Height;//存储原始高度setTag(this);//为控件设置 Tag 属性 3.声明方法&#xff0c;获…

infinityfree最新免费建站详细教程_无需备案_5G空间_无限流量_免费域名_免费SSL

一、明确目标—是否要使用 1.为什么选择InfinityFree&#xff1f; 对于初学者、学生或只是想尝试网站搭建的个人用户来说&#xff0c;InfinityFree提供了一个绝佳的免费解决方案。这个国外免费的虚拟主机服务提供&#xff1a; 5GB存储空间 - 足以存放个人博客、作品集或小型…

打造高效英文单词记忆系统:基于Python的实现与分析

在当今全球化的世界中,掌握一门外语已成为必不可少的技能。对于许多学习者来说,记忆大量的英文单词是一个漫长而艰难的过程。为了提高学习效率,我们开发了一个基于Python的英文单词记忆系统。这个系统结合了数据管理、复习计划、学习统计和测试练习等多个模块,旨在为用户提…

node_modules\deasync: Command failed.

运行&#xff1a;“yarn install” 时报错 PS D:\WebPro\hainan-mini-program> yarn install yarn install v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... warning " > babel-loader8.2.2" has un…

游戏引擎学习第206天

回顾并为当天的工作定下目标 接着回顾了前一天的进展。之前我们做了一些调试功能&#xff0c;并且已经完成了一些基础的工作&#xff0c;但是还有一些功能需要继续完善。其中一个目标是能够展示实体数据&#xff0c;以便在开发游戏逻辑系统时&#xff0c;可以清晰地查看和检查…

Zapier MCP:重塑跨应用自动化协作的技术实践

引言&#xff1a;数字化协作的痛点与突破 在当今多工具协同的工作环境中&#xff0c;开发者与办公人员常常面临数据孤岛、重复操作等效率瓶颈。Zapier推出的MCP&#xff08;Model Context Protocol&#xff09;协议通过标准化数据交互框架&#xff0c;为跨应用自动化提供了新的…