写点什么

Python 基础之: 数字字符串和列表

发布于: 2021 年 02 月 22 日

简介

Python 的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表。本文将会详细的给大家介绍一下这三个数据类型的使用情况。


数字

数字是任何科学计算中非常中要的类型,在 Python 中最常见的数字类型就是 int 和 float。


看几个基本的数字操作:


In [8]: 1+1Out[8]: 2
In [9]: 3*2 + 10Out[9]: 16
In [10]: (65 + 23) / 4Out[10]: 22.0
复制代码

上面我们可以看到,没有小数的是 int 类型,带有小数的是 float 类型。


除法运算 (/) 永远返回浮点数类型。如果要做 floor division 得到一个整数结果(忽略小数部分)你可以使用 // 运算符;如果要计算余数,可以使用 %


In [11]: 54 / 4Out[11]: 13.5
In [12]: 54 // 4Out[12]: 13
In [13]: 54 % 4Out[13]: 2
复制代码

** 可以表示乘方运算:


In [14]: 4 ** 3Out[14]: 64
复制代码

我们可以将数字的运算赋值给特定的变量,并且可以使用该变量进行后续的运算。


In [15]: a = 12
In [16]: b = 14
In [17]: a * bOut[17]: 168
复制代码

在交互式环境中,_表示上一个输出:


In [17]: a * bOut[17]: 168
In [18]: 100 + _Out[18]: 268
复制代码

除了 int 和 float,Python 还支持其他的数据类型,比如 Decimal 和 Fraction,甚至还支持复数。


字符串

Python 中字符串有三种表示形式,可以使用单引号,双引号和三引号来表示。


In [19]: site1 = 'www.flydean.com'
In [20]: site2= "www.flydean.com"
In [21]: site3= """www.flydean.com"""
复制代码

三引号主要用于跨行输出,字符串中的回车换行会自动包含到字符串中,如果不想包含,在行尾添加一个 \ 即可。如下:


print("""\Usage: thingy [OPTIONS]     -h                        Display this usage message     -H hostname               Hostname to connect to""")
复制代码

如果需要转义的话,可以使用反斜杠 \


In [22]: site4 = "www.\"flydean\".com"
In [23]: site4Out[23]: 'www."flydean".com'
复制代码

如果你不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即可:


In [24]: print(r"www.\"flydean\".com")www.\"flydean\".com
复制代码

字符串通过 + 来进行连接,也可以使用 * 来进行复制:


In [25]: "www" + "flydean.com"Out[25]: 'wwwflydean.com'
In [26]: "www.flydean.com" * 3Out[26]: 'www.flydean.comwww.flydean.comwww.flydean.com'
复制代码

相邻的两个或多个 字符串字面值 (引号引起来的字符)将会自动连接到一起.


In [27]: "www" "flydean.com"Out[27]: 'wwwflydean.com'
复制代码

注意,上面的自动连接操作,只能对两个字面量有效,如果是变量的话则会报错。


字符串会被看做是由字符组成的数组,所以可以通过 string[index]的形式来进行访问。


In [28]: site5 = "www.flydean.com"
In [29]: site5[3]Out[29]: '.'
复制代码

如果索引是负数的话,会从右边开始计数:


In [30]: site5[-3]Out[30]: 'c'
复制代码

因为-0 和 0 是一样的,所以负数是从 -1 开始的。


除了索引,字符串还支持 切片。索引可以得到单个字符,而 切片 可以获取子字符串:


In [31]: site5[1:5]Out[31]: 'ww.f'
复制代码

注意切片的开始总是被包括在结果中,而结束不被包括。这使得 s[:i] + s[i:] 总是等于 s


In [33]: site5[:4]+site5[4:]Out[33]: 'www.flydean.com'
复制代码

切片的索引有默认值,省略开始索引时默认为 0。


如果索引超出了字符串的范围就会发送越界错误。


In [34]: site5[100]---------------------------------------------------------------------------IndexError                                Traceback (most recent call last)<ipython-input-34-fc1f475f725b> in <module>()----> 1 site5[100]
IndexError: string index out of range
复制代码

但是,切片中的越界索引会被自动处理:


In [36]: site5[:100]Out[36]: 'www.flydean.com'
复制代码

因为字符串是不可变的,所以我们不能通过索引的形式来对字符串进行修改:


In [37]: site[2] = "A"---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-37-9147d44bd80c> in <module>()----> 1 site[2] = "A"
TypeError: 'str' object does not support item assignment
复制代码

len 用来统计字符串的长度:


In [38]: len(site5)Out[38]: 15
复制代码

字符串对象 str

字符串的本质是字符串对象 str。


可以看下 str 的基本方法:


In [39]: site5.           capitalize()   encode()       format()       isalpha()      islower()      istitle()      lower()        replace()      rpartition()   splitlines()   title()           casefold()     endswith()     format_map()   isdecimal()    isnumeric()    isupper()      lstrip()       rfind()        rsplit()       startswith()   translate()           center()       expandtabs()   index()        isdigit()      isprintable()  join()         maketrans()    rindex()       rstrip()       strip()        upper()           count()        find()         isalnum()      isidentifier() isspace()      ljust()        partition()    rjust()        split()        swapcase()     zfill()
复制代码

感兴趣的同学可以自行去研究。


列表

列表是用方括号表示的数据的集合。列表中的数据可以是多种数据类型,但是一般情况下,我们在一个列表中使用同一个数据类型。


In [40]: ages = [ 10, 14, 18, 20 ,25]
In [41]: agesOut[41]: [10, 14, 18, 20, 25]
复制代码

和字符串一样,列表也支持索引和切片。事实上,只要是 sequence 类型的数据类型,都支持索引和切片。


In [42]: ages[3]Out[42]: 20
In [43]: ages[:2]Out[43]: [10, 14]
In [44]: ages[:]Out[44]: [10, 14, 18, 20, 25]
复制代码

注意,列表的切片会返回一个新的列表。但是这个新的列表是浅拷贝,意味着新列表的元素是原列表中元素的引用。


列表还支持拼接操作:


In [45]: ages + [9, 11]Out[45]: [10, 14, 18, 20, 25, 9, 11]
复制代码

和 String 的不可变性不同,列表是可变的,这就意味着我们可以通过索引来修改列表的值:


In [46]: ages[0] = 100
In [47]: agesOut[47]: [100, 14, 18, 20, 25]
复制代码

列表的底层类型是 list,我们可以看下 list 中的方法:


In [51]: ages.               append()  count()   insert()  reverse()               clear()   extend()  pop()     sort()               copy()    index()   remove()
复制代码

我们可以使用 append 来附加 list 的值,也可以使用 count 来统计 list 的元素个数等等。


上面我们提到了,列表的切片是原列表的引用,所以我们可以通过给切片赋值,来修改原始列表的值:


>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']>>> letters['a', 'b', 'c', 'd', 'e', 'f', 'g']>>> # replace some values>>> letters[2:5] = ['C', 'D', 'E']>>> letters['a', 'b', 'C', 'D', 'E', 'f', 'g']>>> # now remove them>>> letters[2:5] = []>>> letters['a', 'b', 'f', 'g']>>> # clear the list by replacing all the elements with an empty list>>> letters[:] = []>>> letters[]
复制代码

列表还可以进行嵌套,构建多层的列表:


>>> a = ['a', 'b', 'c']>>> n = [1, 2, 3]>>> x = [a, n]>>> x[['a', 'b', 'c'], [1, 2, 3]]>>> x[0]['a', 'b', 'c']>>> x[0][1]'b'
复制代码

本文已收录于 http://www.flydean.com/03-python-number-list-string/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!


发布于: 2021 年 02 月 22 日阅读数: 9
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
Python基础之:数字字符串和列表