Python基础入门:字符串与列表操作详解

小岛来信
小岛来信
发布时间:2026-10-15 | 4人浏览过
原创

本文系统讲解Python基础数据类型,重点涵盖字符串的格式化、类型转换及空格处理,深入解析列表的增删改查、排序反转机制。通过对比其他语言特性,详细演示列表推导式、切片语法及元组使用,帮助开发者快速掌握Python数据处理核心技巧。

鉴于近期公司涉及Python项目维护工作,笔者对Python基础入门知识进行了系统梳理。由于部分知识点有所遗忘,且在阅读《Python编程》一书时发现其内容对具备一定基础的开发者而言存在冗余,因此本文旨在整理差异点,提供更具针对性的参考。

Python目前存在版本2和版本3两种主要分支。对于新学习者,强烈建议直接学习版本3,因为版本2已停止升级与维护,不再提供官方支持。

此外需特别说明,若计划使用Python专门开发网站,通常并非最佳选择,因为Python并非该领域的强项。同时,不应误以为Python作为动态语言在性能效率上不适合服务开发;实际上,许多服务的性能瓶颈并不在代码本身,而可能在于网络延迟等其他因素。

综上所述,Python之所以发展迅速,既得益于活跃的社区支持,也源于其语言设计本身的优越性。接下来我们将重点介绍最常用的数据结构——列表。若尚未安装Python,建议通过搜索引擎获取安装指南,初学者推荐使用exe安装包进行直接安装。

正文

在正式进入列表主题前,先简要介绍字符串(string)类型。由于字符串的介绍篇幅较短,此处将其合并至本节中讲解。


name="jack rose";
print(name.title())

执行上述代码将输出'Jack Rose',其中title方法的作用是将字符串的首字母转换为大写。

作为对比,C#中实现首字母大写的代码如下:Strings.StrConv("str.str.str str_str", VbStrConv.ProperCase, System.Globalization.CultureInfo.CurrentCulture.LCID);

由此可见,Python在数据操作方面确实提供了极大的便利性,后续内容中您将更深刻地体会到这一点。


name="jack rose";
str1=name+1+"2";
print(name.title())

然而,仍有需要注意的细节。在其他高级语言如Python和Java中,某些操作可能不会引发问题,但在Python中却可能存在特定限制。


Traceback (most recent call last):
  File "index.py", line 2, in <module>
    str1=name+1+"2";
TypeError: cannot concatenate 'str' and 'int' objects

为何不会自动转换类型?因为这两个对象类型不同,直接操作会导致失败。具体原因涉及底层机制,让我们通过int转换为str的例子来观察:


a=str(1)
print(a)

与其他语言不同,其他语言通常提供tostring方法并在转换时自动调用,而Python中则是通过str函数实现,这种设计差异导致了语法写法上的不同。

以下是其他几个简单的字符串操作示例。


name=" jack rose ";
print(name.lstrip())

lstrip用于去除左侧空格,rstrip用于去除右侧空格。此处并非单纯介绍这两个函数,而是想说明Python提供了大量区分左右操作的函数。如果您发现一个函数支持从左查询,通常也会有对应的从右查询函数,这正是Python便捷性的体现,因为它提供了丰富的内置函数。

Python的语义化命名使得您无需查阅文档,仅从英文单词即可推断函数功能。字符串部分到此结束,接下来进入本章重点:列表。

增删改查

首先需要明确,Python中没有传统意义上的数组概念,作为一门动态语言,它更倾向于使用列表来操作数据。让我们来看看列表便捷的操作方式。


name=" jack rose ";
list=['a','b','c']
print(list);

输出结果为:['a','b','c']。此处可能有人会疑惑这为何不是数组,您可以将其理解为Python的一种特定语法表现形式。

为了证明其并非字符串数组,请看以下示例:


list=['a','b','c']
list.append(1);
print(list);

输出结果为:['a', 'b', 'c', 1],这表明列表中可以混合存储不同类型的数据。

上述示例展示了添加操作,接下来我们查看插入操作。


list=['a','b','c']
list.append(1);
list.insert(0,1);
print(list);

输出结果为:[1, 'a', 'b', 'c', 1]。

其规则非常简单:在指定位置写入元素,原有位置及其后的元素依次向后移动。

在此说明一点,我们可以像访问索引一样直接访问列表中的元素。


list=['a','b','c']
print(list[0]);

输出结果为a。除此之外,我们还可以使用list[-1]来获取最后一个元素,返回'c'而非抛出异常,这极大地简化了计算过程,无需手动计算最后一个元素的具体位置。 接下来查看删除操作:


list=['a','b','c']
del list[0]
print(list);

输出:['b', 'c']

在此说明,不仅列表支持这种删除方式,其他数据类型也遵循类似逻辑。


a='a';
del a;
print(a);

执行后,列表中不再包含元素'a'。


Traceback (most recent call last):
  File "index.py", line 5, in <module>
    print(a);
NameError: name 'a' is not defined

可以这样理解:变量'a'本身并未被删除,只是切断了变量名'a'与字符串对象'a'之间的引用关系,类似于指针指向的改变。

以下是指定位置弹出元素的示例:


list=['a','b','c']
list.pop();
print(list);

返回结果为:[a,b]。默认情况下,pop方法弹出最后一个元素;若需指定位置,例如弹出第一个元素,可使用pop(0)。

那么如何根据具体值来删除元素呢?


list=['a','b','c','a']
list.remove('a');
print(list);

输出结果为:['b', 'c', 'a']。

可以看到值'a'被删除了一个。若需全部删除,后续系列文章将介绍相关方法,您现在或许可以想到通过遍历来实现。此外,有一个函数count,list.count('a')用于计算'a'出现的次数;而获取列表大小的函数是len,例如len(list)。

在编程中,排序操作必不可少,包括临时排序和永久排序。临时排序返回一个新的列表,而永久排序直接修改原列表,它们分别对应的函数是:


list=['b','c','d','a']
print(sorted(list));
print(list);
list.sort();
print(list);

输出结果为:


['a', 'b', 'c', 'd']
['b', 'c', 'd', 'a']
['a', 'b', 'c', 'd']

通过上述示例可知,sorted是临时排序函数,sort是永久排序函数。值得总结的是:一般来说,调用对象自身的函数通常是永久操作该对象,而外部函数通常会创建并返回一个新对象。

再举一个例子:reverse。list.reverse直接操作原列表,不返回新对象;而reversed(list)则返回一个新对象。

循环


list=['b','c','d','a']
for item in list:
    print(item)

循环语法非常简洁,但需要注意的是,for语句后的列表后必须跟随冒号,这是必须遵守的语法规则。

同样需要介绍另一个重要概念:pass语句。

假如我们在for语句中暂时不执行任何操作,无需纠结为何什么都不做。 此时可以这样编写代码:


list=['b','c','d','a']
for item in list:
    pass

如果没有pass语句,程序将会报错。pass在此处作为占位语句存在。

其他的功能函数

前文提到Python操作数据非常方便,那么生成数据是否同样便捷?


for item in range(0,10):
print(item);

输出结果为:


0
1
2
3
4
5
6
7
8
9

这样便生成了0到9的序列,遵循前开后闭原则。

同样,您可以指定步长来跳过某些元素:


for item in range(0,10,2):
    print(item);

0
2
4
6
8

同样可以进行一些统计操作:


list=range(0,10,2);
print(min(list));
print(max(list));
print(sum(list));

得到结果为0, 8, 20,分别对应最小值、最大值和总和。

向各位介绍一个强大的语法特性,例如您想要将上述列表中的每个元素加1,然后赋值给一个新的列表,该如何编写?


list=range(0,10,2);
list2=[item++1 for item in list]
print(list2);

结果即为:[1, 3, 5, 7, 9]。

此处我写的是item++1,这与C#中的item++语法类似,仅写法不同而已。

那么如果我要复制一个列表该怎么办?


list=range(0,10,2);
list2=list[:]
print(list2);

这样即可实现。[:]是否仅用于复制?当然不是,它是切片语法的一种形式。


list=range(0,10,2);
print(list);
list2=list[1:2]
print(list2);

输出结果为:


[0, 2, 4, 6, 8]
[2]

获取从索引1开始,到索引2结束(不包含2)的元素。

依然遵循前开后闭原则。

除了填写正数索引,您还可以使用负数索引:


list=range(0,10,2);
print(list);
list2=list[-1:]
print(list2);

相信您已猜到,没错,这是获取最后一个元素的方法。

元组

如果您希望某些数据一旦定义便不可修改,可以使用元组。

tuple=(100,200)。

这样便创建了一个元组,即将一些数据放入括号中。

元组通常用于查询场景,其内置函数也非常少。

到此,这篇关于Python基础入门之列表(一)的文章就介绍到这了,更多相关Python列表内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

本站声明

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

Python 相关产品和应用

全部下载

专题列表