Python3 02 数字(Number)、字符串、列表、元组、字典

Python3 数字(Number)

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  # 总是返回一个浮点数
1.6

>>> 17 / 3  # 整数除法返回浮点型
5.666666666666667
>>>
>>> 17 // 3  # 整数除法返回向下取整后的结果
5
>>> 17 % 3  # %操作符返回除法的余数
2
>>> 5 * 3 + 2 
17
>>> 5 ** 2  # 5 的平方
25

//​是否得到整数类型的数与分母分子的数据类型有关。

>>> 7//2
3
>>> 7.0//2
3.0
>>> 7//2.0
3.0
>>> 

变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:

>>> # 尝试访问一个未定义的变量
... n
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

Python3 字符串

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

Python中使用反斜杠转义引号和其它特殊字符来准确地表示。

如果字符串包含有单引号但不含双引号,则字符串会用双引号括起来,否则用单引号括起来。对于这样的输入字符串,print() 函数会产生更易读的输出。

跨行的字面字符串可用以下几种方法表示。使用续行符,即在每行最后一个字符后使用反斜线来说明下一行是上一行逻辑上的延续:

以下使用 \n 来添加新行:

>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
>>> print('"Isn\'t," she said.')
"Isn't," she said.
>>> s = 'First line.\nSecond line.'  # \n 意味着新行
>>> s  # 不使用 print(), \n 包含在输出中
'First line.\nSecond line.'
>>> print(s)  # 使用 print(), \n 输出一个新行
First line.
Second line.

以下使用 反斜线(\) 来续行:

hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
    Note that whitespace at the beginning of the line is\
 significant."

print(hello)

注意,其中的换行符仍然要使用 \n 表示——反斜杠后的换行符被丢弃了。以上例子将如下输出:

This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line is significant.

字符串可以使用 + 运算符串连接在一起,或者用 * 运算符重复:

>>> word = 'Help' + 'A'
>>> word
'HelpA'
>>> '<' + word*5 + '>'
''

两个紧邻的字面字符串将自动被串连;上例的第一行也可以写成 word = ‘Help’ ‘A’ ;这样的操作只在两个字面值间有效,不能随意用于字符串表达式中。

字符串可以被索引;就像 C 语言一样,字符串的第一个字符的索引为 0。没有单独的字符类型;一个字符就是长度为一的字符串。就像Icon编程语言一样,子字符串可以使用分切符来指定:用冒号分隔的两个索引。

>>> word[4]
'A'
>>> word[0:2]
'Hl'
>>> word[2:4]
'ep'

默认的分切索引很有用:默认的第一个索引为零,第二个索引默认为字符串可以被分切的长度。

>>> word[:2]    # 前两个字符
'He'
>>> word[2:]    # 除了前两个字符之外,其后的所有字符
'lpA'

不同于C字符串的是,Python字符串不能被改变。向一个索引位置赋值会导致错误:

>>> word[0] = 'x'
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: 'str' object does not support item assignment
>>> word[:1] = 'Splat'
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: 'str' object does not support slice assignment

然而,用组合内容的方法来创建新的字符串是简单高效的:

>>> 'x' + word[1:]
'xelpA'
>>> 'Splat' + word[4]
'SplatA'
在分切操作字符串时,有一个很有用的规律: s[:i] + s[i:] 等于 s.

>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'

在索引中可以使用负数,这将会从右往左计数。例如:

>>> word[-1]     # 最后一个字符
'A'
>>> word[-2]     # 倒数第二个字符
'p'
>>> word[-2:]    # 最后两个字符
'pA'
>>> word[:-2]    # 除了最后两个字符之外,其前面的所有字符
'Hel'
但要注意, -0 和 0 完全一样,所以 -0 不会从右开始计数!

>>> word[-0]     # (既然 -0 等于 0)
'H'

在这里插入图片描述

Python3 列表

Python囊括了大量的复合数据类型,用于组织其它数值。最有用的是列表,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是相同的类型。

list1 = ['Google', 'Runoob', 1997, 2000];list2 = [1, 2, 3, 4, 5, 6, 7 ];

print ("list1[0]: ", list1[0])

print ("list2[1:5]: ", list2[1:5])
list1[0]:  Google
list2[1:5]:  [2, 3, 4, 5]

像字符串一样,列表可以被索引和切片:

squares = [1, 4, 9, 16, 25]
squares
[1, 4, 9, 16, 25]
squares[0]  # 索引返回的指定项
1
squares[-1]
25
squares[-3:]  # 切割列表并返回新的列表
[9, 16, 25]

所有的分切操作返回一个包含有所需元素的新列表。如下例中,分切将返回列表 squares 的一个拷贝:

>>> squares[:]
[1, 4, 9, 16, 25]

列表还支持拼接操作:

>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Python 字符串是固定的,列表可以改变其中的元素:

>>> cubes = [1, 8, 27, 65, 125]
cubes[3] = 64  # 修改列表值
cubes
[1, 8, 27, 64, 125]

也可以通过使用append()方法在列表的末尾添加新项:

>>> cubes.append(216)  # cube列表中添加新值
cubes.append(7  3)  #  cube列表中添加第七个值
cubes
[1, 8, 27, 64, 125, 216, 3]

你也可以修改指定区间的列表值:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']

#替换一些值

letters[2:5] = ['C', 'D', 'E']
letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']


#移除值
letters[2:5] = []

letters
['a', 'b', 'f', 'g']


#清除列表

letters[:] = []
letters
[]

内置函数 len() 用于统计列表:

>>> letters = ['a', 'b', 'c', 'd']
len(letters)
4

也可以使用嵌套列表(在列表里创建其它列表),例如:

>>> 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'

Python3 元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

创建空元组

tup1 = ();

元组中只包含一个元素时,需要在元素后面添加逗号

tup1 = (50,);

元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

访问元组
元组可以使用下标索引来访问元组中的值,如下实例:

tup1 = ('Google', 'W3CSchool', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

组合元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3)

以上实例输出结果:

(12, 34.56, 'abc', 'xyz')

删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

tup = ('Google', 'W3CSchool', 1997, 2000)

print (tup)
del tup;
print ("删除后的元组 tup : ")
print (tup)

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

删除后的元组 tup : 
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print (tup)
NameError: name 'tup' is not defined

元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
在这里插入图片描述
元组索引,截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
在这里插入图片描述
元组内置函数
在这里插入图片描述
在这里插入图片描述

Python3 字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

也可如此创建字典:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

访问字典里的值
把相应的键放入熟悉的方括弧,如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}

print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
dict['Name']:  W3CSchool
dict['Age']:  7

如果用字典里没有的键访问数据,会输出错误如下:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'};
 
print ("dict['Alice']: ", dict['Alice'])
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'

修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}

dict['Age'] = 8;               # 更新 Age
dict['School'] = "W3Cschool教程"  # 添加信息


print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
dict['Age']:  8
dict['School']:  W3Cschool教程

删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}

del dict['Name'] # 删除键 'Name'
dict.clear()     # 删除字典
del dict         # 删除字典

print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

但这会引发一个异常,因为用执行 del 操作后字典不再存在:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable

字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Name': '小菜鸟'}

print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

dict['Name']:  小菜鸟

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

dict = {['Name']: 'W3CSchool', 'Age': 7}

print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'W3CSchool', 'Age': 7}
TypeError: unhashable type: 'list'

字典内置函数&方法
Python字典包含了以下内置函数:
在这里插入图片描述
Python字典包含了以下内置方法:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41520877/article/details/107761455