(快速上手系列旨在帮助你快速上手一门编程语言和相关技能,旨在保证看了就能用)这篇文章讲的是 Python 入门时最容易反复用到的几块内容:变量怎么保存数据,字符串怎么处理大 小写,怎么把变量放进一句话里,常量在 Python 里通常怎么写,以及列表这种数据结构怎么查、改、 增、删、排序。 这些知识点看起来都很小,但后面写爬虫、数据处理、GUI 小工具、自动化脚本时都会用到。比如: 用户名要格式化,文件路径要拼接,一组成绩要放进列表,课程名要排序,删除某个无效数据。这些 事情,本质上都离不开变量、字符串和列表。知识点 1:变量保存字符串,字符串可以改变显示格式 变量可以理解成“给一段数据起名字”。比如 name = "ada lovelace",就是把字符串 "ada lovelace" 存到变量 name 里。 字符串有很多方法。这里用到的是 title()、lower() 和 upper()name = "ada lovelace"print(name.title()) # 每个单词首字母大写print(name.lower()) # 全部小写print(name.upper()) # 全部大写
Ada Lovelaceada lovelaceADA LOVELACE
title() 不是只把整个字符串的第一个字母变大写,而是把每个单词的首字母变大写。 lower() 是全部变小写,upper() 是全部变大写。原代码注释里写“开头小写”“开头大写”,更准 确的说法应该是“全部小写”“全部大写”。 这些方法不会改变原变量本身,只是返回一个新的显示结果。也就是说,执行 name.upper() 后, name 原来的值仍然是 "ada lovelace"。知识点 2:用 f-string 把变量放进字符串里 写程序时,经常需要把变量拼进一句话里。Python 推荐用 f-string。写法是在字符串前面加 f,然 后把变量放进 {}。first_name = "ada"last_name = "lovelace"full_name = f"{first_name} {last_name}"message = f"hello , {full_name.title()}"print(message)
{full_name.title()} 里不只能放变量,也能放简单表达式或方法调用。 写英文句子时,逗号和空格最好规范一些。原代码输出是 hello , Ada Lovelace,更自然的写法是:message = f"Hello, {full_name.title()}"
字符串里有些字符不能直接看出来,比如换行、缩进、引号。Python 用反斜杠 \ 加字母表示这些特殊效果。print("\tpython")print("\tlanguages:\npython\nc\nc++\njava\n")name = "eric"message = f"hello , {name} , would you like to learn some Python today"print(message)print(name.title())print(name.upper())print(name.lower())print("Albert Einstein once said, \“A person who never made a mistake nevertriedanything new.\”")famous_person = "albert einstine"mes = f"{famous_person}said that"print(mes)na = "\tgeogre\nwashington"print(na)favo = na.lstrip()print(favo)
pythonlanguages:pythoncc++javahello , eric , would you like to learn some Python todayEricERICericAlbert Einstein once said, \“A person who never made a mistake nevertried anythingnew.\”albert einstinesaid thatgeogrewashingtongeogrewashington
lstrip() 的作用是去掉字符串左侧的空白,所以 "\tgeogre\nwashington" 左边的制表符被去掉了, 但中间的换行还在。 如果想去掉右侧空白,用 rstrip();两边都去掉,用 strip()。 爱因斯坦那句有一个细节:代码里写的是 \“ 和 \”,这是中文弯引号,不是普通英文双引号。 Python 不会把它们当成需要转义的英文引号,所以反斜杠被原样打印出来了。知识点 4:多变量赋值和常量 Python 可以一行给多个变量赋值。 常量一般用全大写字母表示。严格来说,Python 没有真正“禁止修改”的常量语法,全大写是一种约 定:看到 MAX,就提醒自己不要随便改它。x, y, z = 0, 0, 0print(x + y + z)MAX = 5000print(x + y + z + MAX)
x, y, z = 0, 0, 0 左右两边数量要能对应上。左边有 3 个变量,右边也给 3 个值。 MAX = 5000 只是写法上表示常量。如果后面写 MAX = 100,Python 不会报错,但这会破坏代码约定 ,读代码的人也容易误解。 变量名建议见名知意。比如 max_score 比 m 更好懂。常量则常写成 MAX_SCORE。 列表用 [] 表示,可以保存多个数据。列表里的每个数据叫元素。 Python 的列表从 0 开始编号,所以第一个元素的索引是 0,不是 1。fruit = ["apple", "banana", "orange"]print(fruit)print(fruit[0])print(fruit[-1])message = f"i love {fruit[2].title()}"print(message)
['apple', 'banana', 'orange']appleorangei love Orange
fruit[0] 取第一个元素,结果是 "apple"。 fruit[-1] 是 Python 很常用的写法,表示取最后一个元素。fruit[-2] 表示倒数第二个元素。 fruit[2] 取第三个元素,也就是 "orange"。再调用 .title(),输出时就变成 "Orange"。 如果列表只有 3 个元素,却写 fruit[3],会报 IndexError。因为索引最大只能到 2。.列表是可以修改的。你可以通过索引直接改某个元素,也可以用 append() 在末尾添加元素。fruit = ["apple", "banana", "orange"]print(fruit)fruit[0] = "melon"print(fruit)fruit.append("grape")print(fruit)subject = []subject.append("math")subject.append("history")subject.append("chemistry")print(subject)subject.insert(0, "geography")print(subject)
['apple', 'banana', 'orange']['melon', 'banana', 'orange']['melon', 'banana', 'orange', 'grape']['math', 'history', 'chemistry']['geography', 'math', 'history', 'chemistry']
fruit[0] = "melon" 会把第一个元素从 "apple" 改成 "melon"。 空列表很常见。比如先创建 subject = [],后面根据用户输入、文件内容或计算结果慢慢往里面放数 据。 insert(0, "geography") 表示在索引 0 的位置插入 "geography"。原来在索引 0 及后面的元素会整 体往后移动。知识点 7:删除列表元素:del、pop()、remove()列表删除元素有好几种写法。它们看起来都在“删东西”,但适合的场景不同。subject = ["geography", "math", "history", "chemistry"]del subject[0]print(subject)popped_subject = subject.pop()print(subject)print(popped_subject)most_like = subject.pop(1)print(f"我最喜欢的科目是{most_like.title()}")fruit = ["melon", "banana", "orange", "grape"]print(fruit)fruit.remove("grape")print(fruit)
['math', 'history', 'chemistry']['math', 'history']chemistry我最喜欢的科目是History['melon', 'banana', 'orange', 'grape']['melon', 'banana', 'orange']
del subject[0] 按索引删除元素。删除后,这个元素就不能再拿来用了。 pop() 默认删除列表末尾元素,并把删除的元素返回给你。所以这行代码能保存被删除的值:popped_subject = subject.pop()
这就是“弹出”的意思:从列表里拿走一个元素,但还能继续使用它。pop(1) 表示弹出索引为 1 的元素。 remove("grape") 按值删除元素,适合“不知道索引,只知道元素内容”的情况。 要注意两点: 第一,remove() 只会删除第一个匹配到的值。 第二,如果列表里没有这个值,会报 ValueError。列表不只是能保存数据,还能组织数据。排序、反转、统计长度,是最常用的三个操作。car = ["byd", "honda", "nissan", "benz"]car.sort()print(car)print(sorted(car))print(car)car.reverse()print(car)print(len(car))
['benz', 'byd', 'honda', 'nissan']['benz', 'byd', 'honda', 'nissan']['benz', 'byd', 'honda', 'nissan']['nissan', 'honda', 'byd', 'benz']4
sort() 会永久改变原列表。执行 car.sort() 后,car 本身已经变成排序后的结果。 sorted(car) 会返回一个临时排序结果,一般不改变原列表。不过这段代码里,car 已经被 sort() 排过了,所以 sorted(car) 和 car 看起来一样。reverse() 不是按字母倒序排序,它只是把当前列表顺序反过来。 len(car) 返回列表长度,也就是元素个数。这里有 4 个汽车品牌,所以输出 4。 字符串也能排序,是因为计算机内部会比较字符编码。初学时不用急着深挖 Unicode,只要先知道: 英文字符串可以按字母顺序排,中文字符串也能排,但排序规则不一定符合日常语言习惯。最后给初学者一个很实用的判断方法:如果你手里只有一个数据,用变量;如果是一组同类数据,用 列表;如果这个值以后不希望被修改,就按常量的风格写成全大写。先把这三件事分清,后面学循环、 函数、文件读写时会顺很多。【1】Python编程:从入门到实践(第2版) 作者:[美] 埃里克 • 马瑟斯 译者:袁国忠 ISBN:978-7-115-54608-1