Python序列对象与String类型内置方法详解

Nora
Nora
发布时间:2026-10-12 | 2人浏览过
原创

本文深入解析Python中序列对象(列表、元组、字符串)与String类型的核心内置方法。内容涵盖序列切片、索引、连接与成员检测,以及zip、enumerate、sorted等常用内置函数的用法。同时详细讲解字符串的大小写转换、分割、替换与去重操作,帮助开发者高效处理数据。

序列对象基础与操作

在Python中,序列是由整数索引的有序集合。根据是否支持修改,序列可分为可变序列(如列表 list)和不可变序列(如元组 tuple 和字符串 str)。理解这些类型及其操作方法,是编写高效Python代码的基础。

索引与切片

序列支持通过整数索引访问元素,索引从0开始。对于负数索引,-1 指向序列的最后一个元素。切片操作 sequenceName[x:y] 用于提取索引从 x 到 y-1 之间的元素,该操作会返回一个新的序列对象,而不会修改原序列。

切片还支持步进参数 sequenceName[x:y:stride],允许按指定步长挑选元素。例如,使用 [::-1] 可以方便地反转序列。

In [1]: li = [1,2,'name']
In [2]: li[0]
Out[2]: 1
In [3]: tp = (1,2,'name')
In [4]: tp[1]
Out[4]: 2
In [6]: str = 'Jmilk'
In [7]: str[2]
Out[7]: 'i'

In [12]: li[:3]
Out[12]: [1, 2, 'name']
In [13]: li[1:3]
Out[13]: [2, 'name']
In [14]: tp[1:3]
Out[14]: (2, 'name')
In [15]: str[1:3]
Out[15]: 'mi'

In [16]: str = 'My name is Jmilk!'
In [21]: str[1:10:2]
Out[21]: 'ynm s'

In [30]: str[-1]
Out[30]: '!'
In [31]: tp[-1]
Out[31]: 'name'

In [27]: str
Out[27]: 'My name is Jmilk!'
In [28]: str[::-1]
Out[28]: '!klimJ si eman yM'

In [33]: str[:-2]
Out[33]: 'My name is Jmil'

序列运算与内置函数

序列支持多种运算和内置函数操作:

  • 连接与重复:使用 + 连接同类型序列,使用 * 生成重复序列。注意,连接不同类型的序列(如字符串与列表)会引发 TypeError。
  • 成员检测:使用 in 和 not in 判断元素是否存在于序列中。
  • 长度与迭代:len() 返回元素个数;zip() 将多个序列对应索引的元素组合成元组,结果长度以最短序列为准;enumerate() 返回索引与元素的元组,可指定起始索引。
  • 排序与反转:sorted() 返回新排序列表,支持 key(提取比较值)和 reverse(正/逆序)参数;reversed() 返回逆序迭代器。
  • 聚合与逻辑:min() 和 max() 返回最小/最大值;sum() 计算数值和(不支持字符串);all() 检测序列是否全为真值;any() 检测是否存在真值。
In [1]: str = 'My name is '
In [2]: name = 'Jmilk'
In [3]: str + name
Out[3]: 'My name is Jmilk'
In [4]: name = ['Jmilk']
In [5]: str + name
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-5-894081027c0a> in <module>()
----> 1 str + name
TypeError: cannot concatenate 'str' and 'list' objects

In [16]: star = '*'
In [17]: star * 10
Out[17]: '**********'
In [18]: star = ['*','*']
In [19]: star * 10
Out[19]: 
['*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*',
 '*']

In [333]: li = [1,2,3]
In [334]: 1 in li
Out[334]: True
In [335]: 1 not in li
Out[335]: False

In [39]: name = 'Jmilk'
In [40]: len(name)
Out[40]: 5

In [54]: str
Out[54]: ['my', 'name', 'is', 'Jmilk']
In [55]: name
Out[55]: 'Jmilk'
In [56]: zip(name,str)
Out[56]: [('J', 'my'), ('m', 'name'), ('i', 'is'), ('l', 'Jmilk')]

In [86]: for i,word in enumerate(name,2):
  print i,word
  ....:   
2 m
3 y
4 
5 n
6 a
7 m
8 e
9 
10 i
11 s
12 
13 j
14 m
15 i
16 l
17 k

In [205]: li = [('a',3),('b',2),('c',1)]
In [208]: sorted(li,key = lambda keyword:keyword[1])
Out[208]: [('c', 1), ('b', 2), ('a', 3)]

In [213]: sorted(li,cmp = lambda x,y:cmp(x[1],y[1]))
Out[213]: [('c', 1), ('b', 2), ('a', 3)]

In [216]: sorted(li,lambda z,x:cmp(z[1],x[1]),reverse=True)
Out[216]: [('a', 3), ('b', 2), ('c', 1)]

In [84]: for word in reversed(name):
  print word,
  ....:   
k l i m j  s i  e m a n  y m

In [43]: min(str)
Out[43]: ' '
In [44]: min(li)
Out[44]: 1

In [59]: num = [1,2,3,4]
In [60]: str = 'My name is Jmilk'
In [61]: sum(num)
Out[61]: 10
In [62]: sum(str)
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-62-3a5f0824550a> in <module>()
----> 1 sum(str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

In [63]: num = [1,2,3,'']
In [64]: all(num)
Out[64]: False
In [65]: num = [1,2,3,True]
In [66]: all(num)
Out[66]: True

In [67]: num = [1,2,3,'']
In [68]: any(num)
Out[68]: True

字符串String类型内置方法

Python的字符串类型支持Unicode编码,并提供丰富的内置方法来处理文本数据。调用这些方法后,返回的仍然是字符串类型。

大小写与格式转换

  • capitalize():将字符串首字母大写,其余小写。
  • lower() / upper():将字符串全部转换为小写或大写。
  • title():将字符串中每个单词的首字母大写,其余小写。
In [88]: str = 'my name is jmilk'
In [89]: str.capitalize()
Out[89]: 'My name is jmilk'

In [90]: str.lower()
Out[90]: 'my name is jmilk'
In [91]: str.upper()
Out[91]: 'MY NAME IS Jmilk'

In [92]: str.title()
Out[92]: 'My Name Is Jmilk'

查找与分割

字符串支持 index(sub[,start[,end]]) 方法,用于在指定范围内查找子串并返回索引。若未找到,将触发 ValueError。

join(iterable) 方法以字符串为分隔符,将序列中的元素连接成一个新字符串。例如,使用空字符串或特定字符作为分隔符连接列表。

In [92]: str.title()
Out[92]: 'My Name Is Jmilk'
In [93]: str.title().index('J',2,13)
Out[93]: 11

In [103]: li = ['a','b','c']
In [104]: str
Out[104]: 'my name is jmilk'
In [105]: str.join(li)
Out[105]: 'amy name is jmilkbmy name is jmilkc'

替换、分割与去重

  • replace(old, new[,count]):替换指定数量的子串。
  • split([sep[,maxsplit]]):以分隔符将字符串分割成列表,可指定最大分割次数。
  • strip([chars]):去除字符串两端的指定字符。注意,该方法仅作用于字符串两端,无法去除中间的子串。
In [113]: url = 'www.jmilk.com'
In [114]: url.replace('jmilk','fan')
Out[114]: 'www.fan.com'

In [117]: url.split('.',2)
Out[117]: ['www', 'jmilk', 'com']
In [118]: url = 'www.jmilk.com'
In [119]: url.split('.',2)
Out[119]: ['www', 'jmilk', 'com']
In [120]: url.split('.',1)
Out[120]: ['www', 'jmilk.com']

In [124]: url.strip('w')
Out[124]: '.jmilk.com'
In [125]: url.strip('m')
Out[125]: 'www.jmilk.co'
In [126]: url.strip('om')
Out[126]: 'www.jmilk.c'

总结

序列对象和字符串类型是Python数据处理的核心。掌握切片、索引、连接、排序以及字符串的格式化、分割和替换方法,能够显著提升代码的简洁性和执行效率。列表类型同样拥有许多强大的内置方法,后续可进一步深入学习。

以上就是Python序列对象与String类型内置方法详解的详细内容,更多关于Python序列与字符串操作技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表