Python基础:深入解析字符串、列表、字典等数据类型

创始人
2024-12-14 20:58:12
0 次浏览
0 评论

在Python,可以用什么数据类型表示串,入“hello”就是一个串?

在Python中,您可以使用字符串数据类型来表示字符串。

一行由字母组成,数字可以包含任何字符的序列,包括符号等。

在Python中,可以使用双引号或双引号来表示字符串。
例如:“hello”或“hello”都是字符串。

可以使用len()函数获取字符串的长度;示例:len("hello")返回值5。

字符串正在拼接,切片搜索它还支持一些常见的功能,例如替换等。

string在python中代表什么

在Python中,字符串是一种基本数据类型,用于表示文本或字符序列。
它可以是ASCII字符、Unicode字符或任何其他类型的字符。
Python中的字符串可以包含字母、数字、符号和特殊字符,并且可以用于各种操作,例如连接、格式化、搜索、替换和排序。
请记住,Python中的字符串是不可变的,这意味着一旦创建,字符串的内容就无法更改。

Python中的几种数据类型

一般来说,Python中的数据类型分为以下几类:Number包括int、long、float、complexString如:hello、hello,helloList如:[1,2,3],[1,2,3,[1,2,3],4]字典(Dictionary)例如:{1:nihao,2:hello}元组(Tuple)例如:(1,2,3,abc)Bool(布尔值)包含True和False,因为Python中的一切都是对象,与其他一些高级语言不同,Python不需要主动声明变量的类型。
例如,我想将值100赋给变量i。
C#实现为:inti=100。
数值类型int和long应该组合在一起的原因是int和long。
原因是Python3.x之后,不再区分int和long,统一使用int。
Python2.x还是不一样。
我们以Python2.7为例:i=10type(i)i=10000000000type(i)那么为什么是10int,当然10000000000与int的最大值相关呢?类型为231-1,即2147483647。
也可以使用sys.maxint。
2**31-12147483647Lsys.maxint2147483647为什么2**31的值是2147483648,是个高个子,所以上面的方法计算出来的值是long类型(数字后面加“L”表示long类型)?,aLong减1结果仍然是long,但实际上int类型的最大值为2147483647type(2147483647)type(2147483648)float类型float类型与周边其他语言中的float基本相同简而言之,它们是带有小数位的数字,其精度与机器的精度相同。
例如:i=10000.1212type(i)complex:复数类型。
具体含义和使用方法请参考相关文档。
声明String类型的字符串有三种方式:单引号、双引号和三引号(包括三个单引号或三个双引号)。
例如:str1=helloworldstr2=helloworldstr3=helloworldstr4=helloworldprintstr1helloworldprintstr2helloworldprintstr3helloworldprintstr4helloworldPython中的字符串有两种数据类型:str类型和Unicode类型。
str类型使用ASCII编码,这意味着它不能表示中文。
Unicode类型使用Unicode编码,可以表示任何字符,包括中文和其他语言。
而且Python中没有像C语言那样的char类型,即使是单个字符也是字符串类型。
字符串使用的默认ASCII编码。
如果想声明为Unicode类型,需要在字符串前添加“u”或“U”。
例如:str1=helloprintstr1hellostr2=uChinaprintstr2China由于对字符串的操作在项目中很常见,而且由于字符串编码问题而产生的问题也很多,所以我们先来说说字符串编码问题。
在使用Python时,我们经常遇到三种编码:ASCII、Unicode和UTF-8。
详细的介绍可以看这篇文章。
我简单的理解是ASCII编码适合英文字符,Unicode适合非英文字符(比如中文,韩文等),utf-8是一种存储和传输格式,是字符解密的重新编码(以8位为单位编码)。
例如:u=u汉printrepr(u)#uu6c49s=u.encode(UTF-8)printrepr(s)#xe6xb1x89u2=s.decode(UTF-8)printrepr(u2)#uu6c49说明:声明Unicode-字符串为“Chinese”,其Unicode编码为“u6c49”,后面UTF-8编码转换会将其编码更改为“xe6xb1x89”。
编码经验总结:1.在Python文件头字符串中声明编码格式;3.对于文件读写操作,建议使用codecs.open(),而不是内置的open()。
遵循关于使用哪种格式进行写作的原则。
只需使用您想要阅读的格式即可。
假设一个以ANSI格式保存的文本文件包含几个“汉字”单词。
pydev打印时出现乱码或者异常是因为codecs可以根据文本本身的编码格式读取内容:f=codecs.open(d:/test.txt)content=f.read()f.close()printcontent可以改为如下方法(仅适用于中文):#-*-coding:utf-8-*-importcodecsf=codecs.open(d:/test.txt)content=f.read()f.close()ifisinstance(content,unicode):printcontent.encode(utf-8)printutf-8else:printcontent.decode(gbk).encode(utf-8)列表classTypelist是一个可变集合类型。
它的元素可以是基本类型(例如数字和字符串),也可以是集合对象(例如列表、元组和字典),甚至可以是用户定义的类型。
定义如下:nums=[1,2,3,4]type(nums)printnums[1,2,3,4]strs=[hello,world]printstrs[hello,world]lst=[1,hello,False,nums,strs]type(lst)printlst[1,hello,False,[1,2,3,4],[hello,world]]访问列表元素。
索引从0开始,支持负索引last.lst=[1,2,3,4,5]printlst[0]1printlst[-1]5printlst[-2]4支持分片操作,可以访问Access内的元素range,支持各种步长,可以使用分片进行数据插入和复制操作nums=[1,2,3,4,5]printnums[0:3]#[1,2,3]#前三个元素printnums[3:]#[4,5]#后两个元素printnums[-3:]#[3,4,5]#最后三个元素不支持nums[-3:0]numsclone=nums[:]printnumsclone#[1,2,3,4,5]复制操作printnums[0:4:2]#[1,3]步长为2nums[3:3]=[三,四]#[1,2,3,三,四,4,5]在3和4之间joins输入nums[3:5]=[]#[1,2,3,4,5],将第4、5个元素替换为[],即删除[三、四]添加加法,支持乘法运算lst1=[hello,world]lst2=[good,time]printlst1+lst2#[hello,world,good,time]printlst1*5#[hello,world,hello,world,hello,world,hello,world,hello,world]列表支持的方法,可以使用以下方法查看列表支持的公共方法:[xforxindir([])ifnotx.startswith(__)][append,count,extend,index,insert,pop,remove,reverse,sort]defcompare(x,y):return1ifxyelse-1#[append]元素lst位于结束添加到列表=[1,2,3,4,5]lst.append(6)printlst#[1,2,3,4,5,6]lst.append(你好)printlst#[1,2,3,4,5,6]#[pop]删除一个元素,并将该元素的值返回为最高值最后x=lst.pop()printx,lst#hello[1,2,3,4,5,6]#这默认删除最后一个元素x=lst.pop(0)printx,lst#1[2,3,4,5,6]删除第一个元素#[count]返回某个元素出现的次数count。
(2)#1#[extend]该方法与“+”操作扩展列表的区别在于,该方法修改了原来的列表,而“+”操作生成了一个新列表lstextend=[你好,世界]lst。
Extension(lstextend)printlst#[2,3,4,5,6,hello,world]基于lst扩展lstextend。
#[index]返回给定值首次出现的索引位置。
如果没有找到,则抛出异常printlst.index(hello)#5#printlst.index(kitty)#ValueError:Anelementgeneratedinkittyisnotinlist#[remove]。
如果要删除的项目不存在,则会抛出异常。
lst.remove(hello)printlst#[2,3,4,5,6,world]Hello是returned#lst.remove(kitty)#ValueError:list.remove(x):xnotinlist#[reverse]表示反向,即列表元素逆序排列,无返回值printlst#[2,3,4,5,6,world]lst.reverse()printlst#[2,3,4,5,6,world]#[sort]排序printlst#由于上面的反转,流排序为[world,6,5,4,3,2]lst.sort()printlst#排序后[2,3,4,5,6,world]nums=[10,5,4,2,3]printnums#[10,5,4,2,3]nums.sort(compare)printnums列表#[2,3,4,5,10]被转换为迭代器。
所谓迭代器就是一个带有next方法的对象(该方法调用时不需要任何参数)。
当调用next方法时,迭代器返回其下一个值。
如果调用next方法但迭代器没有返回值,则会抛出StopIteration异常。
迭代器相对于列表的优点是,使用迭代器不需要一次性将列表添加到内存中,而是可以一项一项地访问列表的数据。
继续使用上面的方法查看迭代器的公共方法:lst=[1,2,3,4,5]lstiter=iter(lst)print[xforxindir(numiter)ifnotx.startswith(__)][next]没错,接下来只有一种方法:lst=[1,2,3,4,5]lstiter=iter(lst)foriinrange(len(lst)):printlstiter.next()#一一打印12345个元组类型。
元组类型与列表相同。
这也是一个序列。
与列表不同,元组无法修改。
元组的声明如下:lst=(0,1,2,2,2)lst1=(hello,)lst2=(hello)printtype(lst1)#如果只有一个元素,后面加一个逗号,否则是str类型printtype(lst2)#字典类型字典类型是键值对的集合,类似于Dictionarydict1={}printtype(dict1)#声明一个空字典dict2={name:kitty,age:18}#直接声明字典类型dict3=dict([(name,kitty),(age,18)])#使用dict将列表转换为字典的函数dict4=dict(name=kitty,age=18)#使用dict函数进行转换bykeywordparameterfordictionarydict5={}.fromkeys([name,age])#使用fromkeys函数从键值列表生成字典。
对应的值为None{age:None,name:None}字典的基本操作方法。
[添加元素]dict1={}dict1[mykey]=helloworld#直接为不存在的键值对赋值,立即添加新元素dict1[(my,key)]=thiskeyisatuple#的Key字典可以是任何不可变类型,例如B、数字、字符串和元组Wait#[键值对数量]Printlen(dict1)#[检查是否包含键]printmykeyindict1#True检查是否存在键值对,且Keymykey包含printhelloindict1#False#[Delete]deldict1[mykey]#删除键mykey的键值对继续使用上面的方法删除所有public显示字典的方法:[xforxindir({})ifnotx.startswith(__)][clear,copy,fromkeys,get,has_key,items,iteritems,iterkeys,itervalues,keys,pop,popitem,setdefault,update,values,viewitems,viewkeys,viewvalues]dict.clear()清除字典中的所有元素dict.copy()返回字典的副本字典回(浅拷贝)。
dict.get(key,default=None)返回dict字典中keykey对应的值。
如果字典中不存在该键,则返回default的值(注意参数default的默认值为None)dict.has_key(key)如果字典中存在该键,则返回True否则返回False。
Python2.2引入in和notin后,这种方法几乎被废弃,但仍然提供了工作接口。
dict.items()返回字典中(键,值)对的元组列表。
dict.keys()返回字典中键的列表。
dict.values()返回字典字典中所有值的列表dict.iter()方法iteritems()、iterkeys()和itervalues()与其非迭代对应项相同,只不过它们使用的是迭代器而是返回一个列表。
dict.pop(key[,default])与get()方法类似。
如果字典中存在该键key,则将其删除;如果该键key不存在且未指定默认值,则返回dict[key]。
抛出KeyError异常。
dict.setdefault(key,default=None)与set()方法类似。
如果字典中不存在key键,则通过dict[key]=default为其赋值。
dict.setdefault(key,default=None)与set()方法类似。
如果字典中不存在key键,则通过dict[key]=default为其赋值。
布尔类型True和False布尔类型与其他语言中的布尔类型基本相同。
下面列出了典型的布尔值:printbool(0)#Falseprintbool(1)#Trueprintbool(-1)#Trueprintbool([])#Falseprintbool(())#Falseprintbool({})#Falseprintbool()#Falseprintbool(None)#不正确
文章标签:
Python 字符串
热门文章
1
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

2
Python字典操作全解析:添加、修改、... Pythondict字典基本操作(包括添加、修改、删除键...

3
Python错误处理与异常处理:构建稳定... 2.5错误处理与异常在编程领域,错误处理和异常处理是保证程序稳定性和健壮性的关键...

4
Python数据转换攻略:字符串、列表、... Python字典、字符串及列表的相互转换Python中数据转换的艺术:从字典和字...

5
Python列表相加与求和技巧解析 重温python基础:列表相加的方法(两个list[]加法)今天,我们来看看Py...

6
Python运行快捷键大揭秘:高效操作,... python运行按哪个键运行Python时的快捷键包括Ctrl+Shift+F1...

7
Python字符与数字互转攻略:轻松掌握... python 字符与数字如何转换Python是一种功能强大且结...

8
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表Python中将字符串转换为列表的方法有多种,...

9
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表在Python中将字符串转换为列表的方法有很多...

10
Python列表转字符串全攻略:掌握四种... Python列表到字符串–如何在Python中转换列表在Python中,将列表转...