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

flydean 2021-02-22 19:21:37
Python 字符串 基础 数字 字字


简介

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

数字

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

看几个基本的数字操作:

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

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

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

In [11]: 54 / 4
Out[11]: 13.5
In [12]: 54 // 4
Out[12]: 13
In [13]: 54 % 4
Out[13]: 2

** 可以表示乘方运算:

In [14]: 4 ** 3
Out[14]: 64

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

In [15]: a = 12
In [16]: b = 14
In [17]: a * b
Out[17]: 168

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

In [17]: a * b
Out[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]: site4
Out[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" * 3
Out[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]: ages
Out[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]: ages
Out[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/

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

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

版权声明
本文为[flydean]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000039255357

  1. 翻译:《实用的Python编程》02_02_Containers
  2. Python基于粒子群优化的投资组合优化研究
  3. ubuntu部署django项目
  4. 兩年Java,去位元組跳動寫Python和Go
  5. 翻譯:《實用的Python程式設計》02_02_Containers
  6. 这样学习Python,爷爷都学会了!超简单Python入门
  7. [Python] 基于 jieba 的中文分词总结
  8. 【python】递归听了N次也没印象,读完这篇你就懂了
  9. [Python] 基于 jieba 的中文分词总结
  10. 人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式
  11. [Python] 基於 jieba 的中文分詞總結
  12. Python属于后端开发还是前端开发?Python入门!
  13. 【python】递归听了N次也没印象,读完这篇你就懂了
  14. 一天快速入门python
  15. 学习Python对年龄有没有要求?30岁可以吗?
  16. 清华教授!12小时整理的最全Python教程(文末无偿分享)
  17. 使用Python开发DeFi项目
  18. python 函数详解
  19. Python工程师是做什么的?前景如何?
  20. Filecmp -- comparison of files and directories
  21. Python - zip() 函数
  22. 30 周年生日,Python 先驱是怎么评价这门语言的?
  23. Drawing and beautifying skills of [Python] Matplotlib chart
  24. Python + dash rapid web application development static components
  25. Translation: practical Python Programming 02_ 01_ Datatypes
  26. python将excel自适应导入数据库
  27. 从小白到大师,这里有一份Pandas入门指南
  28. [Python] 茎叶图和复合饼图的画法
  29. [Python interface automation] - regular use case parameterization
  30. Translation: practical Python Programming 02_ 02_ Containers
  31. Two years of Java, to write Python and go
  32. Translation: practical Python Programming 02_ 02_ Containers
  33. Two years of Java, to write Python and go
  34. Python-geoplot 空间核密度估计图绘制
  35. Python-seaborn 经济学人经典图表仿制
  36. python空间绘图- regionmask掩膜操作示例
  37. Python 空间绘图 - Cartopy 经纬度添加
  38. Python-pykrige包-克里金(Kriging)插值计算及可视化绘制
  39. Python 批量重采样、掩膜、坡度提取
  40. python - 多种交通方式可达圈分析
  41. Python 空间绘图 - 房价气泡图绘制
  42. Translation: practical Python Programming 02_ 02_ Containers
  43. Research on Portfolio Optimization Based on particle swarm optimization
  44. Ubuntu deploying Django project
  45. Two years of Java, write Python and go without byte beating
  46. Translation: practical Python Programming 02_ 02_ Containers
  47. So learn python, grandfather learned! Introduction to super simple Python
  48. python3 多线程 与 mongo亿级消费日志数据 新鲜demo 【优化第一版】
  49. Summary of Chinese word segmentation based on Jieba
  50. I've heard it n times, but I'm not impressed. After reading this, you'll understand
  51. Summary of Chinese word segmentation based on Jieba
  52. From movie art to Python code to realize God's reverse thinking mode
  53. Summary of Chinese word segmentation based on Jieba
  54. ARIMA模型预测CO2浓度时间序列-python实现
  55. Python belongs to back-end development or front-end development? Introduction to Python!
  56. python isinstance()
  57. I've heard it n times, but I'm not impressed. After reading this, you'll understand
  58. This article will familiarize you with the transformation process of Python - & gt; cafe - & gt; om model
  59. 如何用Python一键修改上万个文件名
  60. One day quick start to Python