DDR爱好者之家 Design By 杰米

简介

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'

总结

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。