0. 下标和切片

1. 下标索引

所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间

字符串中"下标"的使用

列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。

如果有字符串:name = 'abcdef',在内存中的实际存储如下:

如果想取出部分字符,那么可以通过下标的方法,(注意python中下标从 0 开始)

name = 'abcdef'print(name[0])
print(name[1])
print(name[2])
# 运行结果:
a
b
c

2. 切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片的语法:[起始:结束:步长] [start:end:step]

注意:选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。

我们以字符串为例讲解。

name = 'abcdef'print(name[0:3]) # 取 下标 0~2 的字符
abcprint(name[0:5]) # 取 下标为 0~4 的字符
abcdeprint(name[3:5]) # 取 下标为3、4 的字符
defprint(name[2:]) # 取 下标为2开始到最后的字符
cdefprint(name[1:-1]) # 取 下标为1开始 到 最后第2个  之间的字符
bcde
 >>> a = "abcdef">>> a[:3]'abc'>>> a[::2]'ace'>>> a[5:1:2] ''>>> a[1:5:2]'bd'>>> a[::-2]'fdb' >>> a[5:1:-2]'fd'

想一想(面试题):给定一个字符串aStr, 请反转字符串

s = 'Hello World!'print(s[4])
print(s)
print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:5])  # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)
print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)
print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)# python 字符串快速逆置
print(s[::-1])  # 从后向前,按步长为1进行取值

总结:

  • 索引是通过下标取某一个元素
  • 切片是通过下标去某一段元素

1. 字符串

1. 介绍

python中字符串的格式
如下定义的变量a,存储的是数字类型的值

a = 100

如下定义的变量b,存储的是字符串类型的值

b = "hello world"
或者
b = 'hello world'
或者
b = '''hello world'''
或者
b = """hello world"""

小总结:

  • 单引号或者双引号或者三引号中的数据,就是字符串

2. 字符串输出

1.格式化操作符

name = 'Py程序狗'
position = '程序员'
address = '北京'print("姓名:%s" % name)
print("职位:%s" % position)
print("地址:%s" % address)
# 结果:
姓名: Py程序狗
职位: 程序员
公司地址: 北京

2.f-strings

f-strings 提供一种简洁易读的方式, 可以在字符串中包含 Python 表达式. f-strings 以字母 ‘f’ 或 ‘F’ 为前缀, 格式化字符串使用一对单引号、双引号、三单引号、三双引号. 格式化字符串中。

name = 'Py程序狗'
age = 25
format_string1 = f'我的名字是 {name}, 我的年龄是 {age}'
format_string2 = f"我的名字是 {name}, 我的年龄是 {age}"
format_string3 = F'''我的名字是 {name}, 我的年龄是 {age}'''
format_string4 = F"""我的名字是 {name}, 我的年龄是 {age}"""
format_string5 = f'3 + 5 = {3 + 5}'
a = 10
b = 20
format_string6 = f'3 + 5 = {a + b}'
# 两个花括号会被替换为一个花括号, 注意{{}} 不表示表达式
format_string7 = F'我的名字是 {{name}}, 我的年龄是 {{age}}'print(format_string1)
print(format_string2)
print(format_string3)
print(format_string4)
print(format_string5)
print(format_string6)
print(format_string7)

结果:

我的名字是 Py程序狗, 我的年龄是 25
我的名字是 Py程序狗, 我的年龄是 25
我的名字是 Py程序狗, 我的年龄是 25
我的名字是 Py程序狗, 我的年龄是 25
3 + 5 = 8
3 + 5 = 30
我的名字是 {name}, 我的年龄是 {age}

3. 字符串输入

之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中;
注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存。

demo:

userName = input('请输入用户名:')
print("用户名为:%s" % userName)password = input('请输入密码:')
print("密码为:%s" % password)
# 结果:(根据输入的不同结果也不同)
请输入用户名:Jason
用户名为: Jason
请输入密码:123456
密码为: 123456

4. 字符串常见操作

如有字符串 mystr = 'hello world',以下是常见的操作

1. find

检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr.find(str, start=0, end=len(mystr))

>>> str = 'hello world'
>>> str.find('l')
2
>>> str.find('z')
-1

2. index

跟find()方法一样,只不过如果str不在 mystr中会报一个异常
mystr.index(str, start=0, end=len(mystr))

>>> str = 'hello'
>>> str.index('a')
Traceback (most recent call last):File "<pyshell#5>", line 1, in <module>str.index('a')
ValueError: substring not found

3. count

返回 str在start和end之间 在 mystr里面出现的次数
mystr.count(str, start=0, end=len(mystr))

>>> str = 'hello world'
>>> str.count('l', 1, 5)
2

4. replace

把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次
mystr.replace(str1, str2, mystr.count(str1))

>>> str = 'hello'
>>> str.replace('l', 'a', 1)
'healo'

5. split

以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
mystr.split(str=" ", 2)

>>> str = 'hello'
>>> str.split('l', 2)
['he', '', 'o']

6. capitalize

把字符串的第一个字符大写
mystr.capitalize()

>>> str = 'hello'
>>> str.capitalize()
'Hello'

7. title

把字符串的每个单词首字母大写
mystr.title()

>>> a = "hello world"
>>> a.title()
'Hello World'

8. startswith

检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
mystr.startswith(hello)

>>> str = 'hello'
>>> str.startswith('h')
True
>>> str.startswith('e')
False

9. endswith
检查字符串是否以obj结束,如果是返回True,否则返回 False.
mystr.endswith(obj)

>>> str = 'hello'
>>> str.endswith('o')
True
>>> str.endswith('h')
False

10. lower

转换 mystr 中所有大写字符为小写
mystr.lower()

>>> str = 'Hello World'
>>> str.lower()
'hello world'

11. upper

转换 mystr 中的小写字母为大写
mystr.upper()

>>> str = 'hello world'
>>> str.upper()
'HELLO WORLD'

12. lstrip

删除 mystr 左边的空白字符
mystr.lstrip()

>>> str = ' hello world '
>>> str.lstrip()
'hello world '

13. rstrip

删除 mystr 字符串末尾的空白字符
mystr.rstrip()

>>> str = ' hello world '
>>> str.rstrip()
' hello world'

14. strip

删除mystr字符串两端的空白字符
mystr.strip()

>>> str = ' hello world '
>>> str.strip()
'hello world'

15. rfind

类似于 find()函数,不过是从右边开始查找.
mystr.rfind(str, start=0,end=len(mystr) )

>>> str = 'hello'
>>> str.rfind('e')
1

16. rindex

类似于 index(),不过是从右边开始.
mystr.rindex( str, start=0,end=len(mystr))

>>> str = 'hello'
>>> str.index('e')
1

17. partition

把mystr以str分割成三部分,str前,str和str后
mystr.partition(str)

>>> str = 'hello world'
>>> str.partition('l')
('he', 'l', 'lo world')

18. rpartition

类似于 partition()函数,不过是从右边开始.
mystr.rpartition(str)

>>> str = 'hello world'
>>> str.rpartition('l')
('hello wor', 'l', 'd')

19. splitlines

按照行分隔,返回一个包含各行作为元素的列表
mystr.splitlines()

>>> str = 'hello world'
>>> str.splitlines()
['hello world']>>> str = 'hello\nworld'
>>> str.splitlines()
['hello', 'world']

20. isalpha

如果 mystr 所有字符都是字母 则返回 True,否则返回 False
mystr.isalpha()

>>> str = 'hello'
>>> str.isalpha()
True
>>> str = 'hello123'
>>> str.isalpha()
False

21. isdigit

如果 mystr 只包含数字则返回 True 否则返回 False.
mystr.isdigit()

>>> str = 'hello123'
>>> str.isdigit()
False
>>> str = '123'
>>> str.isdigit()
True

22. isalnum

如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False
mystr.isalnum()

>>> str = 'hello123'
>>> str.isalnum()
True
>>> str = 'hello'
>>> str.isalnum()
True
>>> str = '123'
>>> str.isalnum()
True
>>> str = 'hello123%'
>>> str.isalnum()
False

23. isspace

如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr.isspace()

>>> str = ''
>>> str.isspace()
False
>>> str = ' '
>>> str.isspace()
True
>>> str = '12ab'
>>> str.isspace()
False

24. join

mystr 中每个元素后面插入str,构造出一个新的字符串
mystr.join(str)

>>> str = 'a'
>>> str.join('hello')
'haealalao'>>> str = '_'
>>> str.join(['my', 'name', 'is', 'Jason'])
'my_name_is_Jason'

2. 列表

1. 列表的格式

变量A的类型为列表
namesList = ['xiaoWang','xiaoZhang','xiaoHua']
比C语言的数组强大的地方在于列表中的元素可以是不同类型的
testList = [1, 'a']

2. 打印列表

demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print(namesList[0])
print(namesList[1])
print(namesList[2])
# 结果:
xiaoWang
xiaoZhang
xiaoHua

3. 循环遍历列表

1. 使用for循环

为了更有效率的输出列表的每个数据,可以使用循环来完成

demo:

name_list = ['xiaoWang','xiaoZhang','xiaoHua']
for name in name_list:print(name)
# 结果:
xiaoWang
xiaoZhang
xiaoHua

2. 使用while循环

为了更有效率的输出列表的每个数据,可以使用循环来完成

demo:

name_list = ['xiaoWang','xiaoZhang','xiaoHua']
length = len(name_list)
i = 0
while i<length:print(name_list[i])i+=1
# 结果:
xiaoWang
xiaoZhang
xiaoHua

4. 列表的相关操作

列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”、“查”。

1. 添加元素("增"append, extend, insert)

append 追加填入列表元素

>>> name_list = ['Bob', 'Jason']
>>> name_list.append('Dom')
>>> name_list
['Bob', 'Jason', 'Dom']

extend 将另一个集合中的元素逐一添加到列表中

>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> a.append(b)
>>> a
[1, 2, 3, ['a', 'b', 'c']]

insert 语法:insert(index, object) 在指定位置index前插入元素object

>>> a = [1, 2, 3, 4, 5]
>>> a.insert(2, 'aa')
>>> a
[1, 2, 'aa', 3, 4, 5]

2. 修改元素(“改”)

修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改。

demo:

# 定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']
print("-----修改之前,列表A的数据-----")
for tempName in A:print(tempName)# 修改元素
A[1] = 'xiaoLu'
print("-----修改之后,列表A的数据-----")
for tempName in A:print(tempName)

结果:

-----修改之前,列表A的数据-----
xiaoWang
xiaoZhang
xiaoHua
-----修改之后,列表A的数据-----
xiaoWang
xiaoLu
xiaoHua

3. 查找元素("查"in, not in, index, count)

所谓的查找,就是看看指定的元素是否存在

(1)in, not in

python中查找的常用方法为:

in(存在),如果存在那么结果为true,否则为falsenot in(不存在),如果不存在那么结果为true,否则false

demo

#待查找的列表
nameList = ['xiaoWang','xiaoZhang','xiaoHua']
#获取用户要查找的名字
findName = 'xiaoZhang'
#查找是否存在
if findName in nameList:print('在字典中找到了相同的名字')
else:print('没有找到')#获取用户要查找的名字
findName = 'xiaoLiu'
#查找是否存在
if findName in nameList:print('在字典中找到了相同的名字')
else:print('没有找到')结果1:(找到)在字典中找到了相同的名字
结果2:(没有找到)没有找到

说明:

  • in 的方法只要会用了,那么 not in 也是同样的用法,只不过 not in 判断的是不存在

(2)index, count

indexcount 与字符串中的用法相同

>>> a = [1, 2, 3, 4, 5, 4, 2, 4]
>>> a.index(2, 0, 5)
1
>>> a.index(2)
1
>>> a.count(4)
3
>>> a.count(6)
0
>>> a.index(5, 0, 2)
Traceback (most recent call last):File "<pyshell#119>", line 1, in <module>a.index(5, 0, 2)
ValueError: 5 is not in list

4.删除元素(del, pop, remove)

列表元素的常用删除方法有:

del:根据下标进行删除
pop:删除最后一个元素
remove:根据元素的值进行删除

del

movieName = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']
del movieName[2]
for tempName in movieName:print(tempName)# 结果:
加勒比海盗
骇客帝国
指环王
霍比特人
速度与激情

pop

movieName = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']
movieName.pop()
for tempName in movieName:print(tempName)# 结果:
加勒比海盗
骇客帝国
第一滴血
指环王
霍比特人

remove

movieName = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']
movieName.remove('指环王')
for tempName in movieName:print(tempName)# 结果:
加勒比海盗
骇客帝国
第一滴血
霍比特人
速度与激情

5. 排序(sort, reverse)

sort 方法是将list按特定顺序重新排列,默认为由小到大,参数 reverse=True 可改为倒序,由大到小。

reverse方法是将list逆置。

>>> a = [1, 4, 2, 5, 3]
>>> a.reverse()
>>> a
[3, 5, 2, 4, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
>>> a.sort(reverse=True)
>>> a
[5, 4, 3, 2, 1]

5. 列表的嵌套

1. 列表嵌套

类似while循环的嵌套,列表也是支持嵌套的,一个列表中的元素又是一个列表,那么这就是列表的嵌套。

schoolNames = [['北京大学','清华大学'],['南开大学','天津大学','天津师范大学'],['山东大学','中国海洋大学']]

2. 应用

一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

#encoding=utf-8
import random# 定义一个列表用来保存3个办公室
offices = [[], [], []]
# 定义一个列表用来存储8位老师的名字
names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
i = 0
for name in names:index = random.randint(0, 2)offices[index].append(name)
i = 1
for tempNames in offices:print('办公室%d的人数为:%d' % (i, len(tempNames)))i += 1for name in tempNames:print("%s" % name, end='')print("\n")print("-" * 20)# 运行结果如下:
办公室1的人数为:1
G--------------------
办公室2的人数为:5
ABDEH--------------------
办公室3的人数为:2
CF--------------------

3. 元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

>>> tuple = (1, 2, 3, 4, 5)
>>> tuple
(1, 2, 3, 4, 5)

1. 访问元组

>>> tuple = (1, 2, 3, 4, 5)
>>> tuple[1]
2
>>> tuple[3]
4
>>> tuple[8]
Traceback (most recent call last):File "<pyshell#132>", line 1, in <module>tuple[8]
IndexError: tuple index out of range

2. 修改元组

>>> tuple = (1, 2, 3, 4, 5)
>>> tuple[2] = 'aa'
Traceback (most recent call last):File "<pyshell#134>", line 1, in <module>tuple[2] = 'aa'
TypeError: 'tuple' object does not support item assignment

说明: python中不允许修改元组的数据,包括不能删除其中的元素。

3. count, index

indexcount 与字符串和列表中的用法相同

>>> tuple = (1, 2, 3, 4, 5, 3, 2, 3)
>>> tuple.index(3, 1, 5)
2
>>> tuple.index(5, 0, 2)
Traceback (most recent call last):File "<pyshell#137>", line 1, in <module>tuple.index(5, 0, 2)
ValueError: tuple.index(x): x not in tuple
>>> tuple.count(3)
3

4. 字典

1. 变量info为字典类型:

info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}

说明:

字典和列表一样,也能够存储多个数据
列表中找某个元素时,是根据下标进行的
字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'id'、'sex')
字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值

2. 根据键访问值

>>> info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> info['name']
'王二狗'
>>> info['address']
'北京'

若访问不存在的键,则会报错:

>>> info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> info['age']
Traceback (most recent call last):File "<pyshell#143>", line 1, in <module>info['age']
KeyError: 'age'

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

>>> info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> info.get('age', 25)  # 若info中不存在'age'这个键,就返回默认值18
25

3. 字典的常见操作1

1. 查看元素

除了使用key查找数据,还可以使用get来获取数据

info = {'name':'王二狗', 'age':25}
print(info['age']) # 获取年龄
# print(info['sex']) # 获取不存在的key,会发生异常
print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常

结果:

25
None

2. 修改元素

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改

info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
info['id'] = int(101)
print('修改之后的id为%d。' % info['id'])

结果:

修改之后的id为101。

3. 添加元素

demo: 访问不存在的元素

info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
print('age为:%d'%info['age'])

结果:

Traceback (most recent call last):File "/Users/jason93/Desktop/PythonProject/djangoProject/apps/users/tests.py", line 7, in <module>print('id为:%d' % info['age'])
KeyError: 'age'

如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素

demo: 添加新的元素

>>> info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> info['age'] = 25
>>> info
{'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京', 'age': 25}

4. 删除元素

对字典进行删除操作,有以下几种:

del
clear()
demo:del删除指定的元素

del删除单个元素

info = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
del info['name']
print('删除后,%s'%info['name'])

结果

Traceback (most recent call last):File "/Users/jason93/Desktop/PythonProject/djangoProject/apps/users/tests.py", line 7, in <module>print('删除后,%s' % info['name'])
KeyError: 'name'

del 删除整个字典

info = {'name': 'monitor', 'sex': 'f', 'address': 'China'}
del info
print('删除后,%s' % info)

结果

Traceback (most recent call last):File "/Users/jason93/Desktop/PythonProject/djangoProject/apps/users/tests.py", line 7, in <module>print('删除后,%s'%info)
NameError: name 'info' is not defined

clear清空整个字典

info = {'name': 'monitor', 'sex': 'f', 'address': 'China'}
info.clear()
print('清空后,%s' % info)

结果

清空后,{}

4. 字典的常见操作2

1. len()

测量字典中,键值对的个数

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> len(dict)
4

2. keys

返回一个包含字典所有KEY的列表

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> dict.keys()
dict_keys(['id', 'name', 'sex', 'address'])

3. values

返回一个包含字典所有value的列表

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> dict.values()
dict_values([100, '王二狗', '男', '北京'])

4. items

返回一个包含所有(键,值)元祖的列表

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> dict.items()
dict_items([('id', 100), ('name', '王二狗'), ('sex', '男'), ('address', '北京')])

5. 遍历

通过for … in … 我们可以遍历字符串、列表、元组、字典等

注意python语法的缩进

1. 字符串遍历

>>> str = 'hello'
>>> for i in str:i'h'
'e'
'l'
'l'
'o'

2. 列表遍历

>>> a = [1, 2, 3, 4, 5]
>>> for i in a:i1
2
3
4
5

3. 元组遍历

>>> tuple = (1, 2, 3, 4, 5)
>>> for i in tuple:print(i, end='')12345

4. 字典遍历

(1)遍历字典的key(键)

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> for k in dict.keys():k'id'
'name'
'sex'
'address'

(2)遍历字典的value(值)

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> for v in dict.values():v100
'王二狗'
'男'
'北京'

(3)遍历字典的项(元素)

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> for kv in dict.items():kv('id', 100)
('name', '王二狗')
('sex', '男')
('address', '北京')

(4)遍历字典的key-value(键值对)

>>> dict = {'id': 100, 'name': '王二狗', 'sex': '男', 'address': '北京'}
>>> for k, v in dict.items():print('key=%s, value=%s'%(k, v))key=id, value=100
key=name, value=王二狗
key=sex, value=男
key=address, value=北京

5. enumerate()

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

>>> a = [1, 2, 3, 4, 5]
>>> for index, value in enumerate(a):index, value(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)

5. 有序字典:OrderDcit

我们先看一段代码, 此代码运行在 Python3.5 版本中:

# 创建无序字典
my_dict = dict()
# 向字典中添加元素
my_dict['one'] = 1
my_dict['two'] = 2
my_dict['three'] = 3
my_dict['four'] = 4
print(my_dict)

输出结果(不固定):

{'three': 3, 'two': 2, 'four': 4, 'one': 1}

输出结果并不是按照我们创建字典、添加元素的顺序输出, 这是由于 dict 是无序的. 如果我们想最终打印输出的顺序和我们操作时的顺序保持一致, 我们就需要使用有序字典:

from collections import OrderedDict
# 创建有序字典
my_dict = OrderedDict()
# 向字典中添加元素
my_dict['one'] = 1
my_dict['two'] = 2
my_dict['three'] = 3
my_dict['four'] = 4
print(my_dict)

输出结果:

OrderedDict([('one', 1), ('two', 2), ('three', 3), ('four', 4)])

在 Python3.6 版本中, dict 字典已经经过优化, 变为有序字典. 并且字典所占用的内存占用减少了20%到25%.

第一段代码在 Python3.6 运行下, 输出结果如下:

{'one': 1, 'two': 2, 'three': 3, 'four': 4}

6. 公共方法

1. 运算符

以下是举例子:

+
>>> "hello " + "world"
'hello world'
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> ('a', 'b') + ('c', 'd')
('a', 'b', 'c', 'd')
*
>>> 'ab' * 4
'ababab'
>>> [1, 2] * 4
[1, 2, 1, 2, 1, 2, 1, 2]
>>> ('a', 'b') * 4
('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b')
in
>>> 'itc' in 'hello world'
True
>>> 3 in [1, 2]
False
>>> 4 in (1, 2, 3, 4)
True
>>> "name" in {"name":"Jason", "age":25}
True

注意,in在对字典操作时,判断的是字典的键

2. python内置函数

Python包含了以下内置函数

len
>>> len("hello world")
12
>>> len([1, 2, 3, 4])
4
>>> len((3,4))
2
>>> len({"a":1, "b":2})
2

注意:len在操作字典数据时,返回的是键值对个数。

max
>>> max("hello")
'o'
>>> max([1,4,522,3,4])
522
>>> max({"a":1, "b":2})
'b'
>>> max({"a":10, "b":2})
'b'
>>> max({"c":10, "b":2})
'c'
del

del有两种用法,一种是del加空格,另一种是del()

>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a = ['a', 'b']
>>> del a[0]
>>> a
['b']
>>> del(a)
>>> a
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

3. 多维列表/元祖访问的示例

>>> tuple1 = [(2,3),(4,5)]
>>> tuple1[0]
(2, 3)
>>> tuple1[0][0]
2
>>> tuple1[0][2]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: tuple index out of range>>> tuple1[0][1]
3
>>> tuple1[2][2]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: list index out of range>>> tuple2 = tuple1+[(3)]
>>> tuple2
[(2, 3), (4, 5), 3]
>>> tuple2[2]
3
>>> tuple2[2][0]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable

Python基础之 3. 容器:字符串、列表、元组、字典相关推荐

  1. 4.Python基础语法(数字运算/字符串/列表/元组/字典/集合)

    4.1 数字运算 编程是将问题数据化的一个过程,数据离不开数字,Python的数字运算规则与我们学习的四则运算规则是一样的,即使不使用Python来编写复杂的程序,也可以将其当作一个强大的计算器.打开 ...

  2. Python基础之day03-字符串,列表,元组,字典

    Python基础之day03-字符串,列表,元组,字典 文章目录 Python基础之day03-字符串,列表,元组,字典 一.字符串 二.下标与字符串切片 三.列表 四.元祖 五.字典 六.公用方法 ...

  3. Python 字符串/列表/元组/字典之间的相互转换 - Python零基础入门教程

    目录 一.字符串 str 与列表 list 1.字符串转列表 2.列表转字符串 二.字符串 str 与字典 dict 1.字符串转字典 2.字典转字符串 三.列表 list 与字典 dict 1.列表 ...

  4. Python基础学习!容器:列表,元组,字典与集合!(2)

    本文是元组 字典与集合的学习笔记! 真滴好多! 在许多地方都可以用元组代替列表,但是元组的方法函数与列表相比要少. 像,append(),insert()这些函数,元组都没有.因为,创建元组就无法修改 ...

  5. Python基础学习!容器:列表,元组,字典与集合!(1)

    本文是容器 列表知识的笔记! 元组&列表 元组:() 是不可变的,值被固定元组中就不可以再进行改变! 列表:[] 是可变的,意味着可以随意插入或者删除其中的元素 函数调用格式: 列表名.函数名 ...

  6. python基础3---循环和字符串列表

    复习: 1.字符串和数字之间不能⽐⼤⼩,但可以判断是否相等(⼀定不相等) 2.在判断中使⽤or的时候,后边的判断条件⼀定要写全,不能只写⼀个数据值 对于数字来说: 0-->False,其余的全是 ...

  7. python字符串转换元组_python 字符串,列表,元组,字典相互转换

    1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 字典转为字符串,返回: {'age': 7, 'name': 'Zara', 'cla ...

  8. day02 格式化输出 运算符 编码 字符串 列表 元组 字典 set集合 深浅拷贝

    day02学习大纲 一. 格式化输出: %s 占位字符串 %d 占位数字 "xxx%sx %sxx" % (变量, 变量) 二. 运算符: a+=b a = a + b and 并 ...

  9. Python基础二_操作字符串常用方法、字典、文件读取

    一.字符串常用方法: name.captitalize()                       #字符串首字母大写 name.center(50,'*')                   ...

  10. Python基础(四)(列表、元组、字典、字符串、Python内置函数、切片、运算符、成员运算符)

    高级变量类型 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 Fa ...

最新文章

  1. mac redies install
  2. 算法炒房三月亏20多亿!房地产巨头大翻车!
  3. 解析Jquery取得iframe中元素的几种方法
  4. python中return的理解-python中的return的返回与执行
  5. java学习文档_资深程序员带你深入了解JAVA知识点,实战篇,PDF文档
  6. 我的第一个REST客户端程序!
  7. 抓包红色_抓包三部曲 WebSocket 协议原理抓包分析
  8. 有人问我,为什么1+1等于2
  9. WinForm与WebForm调试输出
  10. Vue —— 移动端添加 fastclick
  11. GTK 3.0弹出窗口及设置背景图片的代码
  12. 【经典】具有中国特色的脑筋急转弯
  13. java菜鸟驿站_RxJava菜鸟驿站(一)
  14. 基于Qt的学生信息管理系统
  15. lbj学习日记 06 一维数组和二维数组刷题课
  16. 一个域名引发的血案……
  17. mysql 2038年问题_当前系统在2038年之后datetime类也无法获取当前时间的解决
  18. MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)...
  19. VUE脚手架的搭建(简单明了)
  20. 告别福禄克DTX系列,欢迎dsx2-5000网线测试

热门文章

  1. 适合小白的Linux入门学习教程,从安装到实操(涵盖各种常用指令,超详细!)
  2. 移位寄存器SHIFT RAM IP之模拟图像卷积
  3. 【Python for Everybody(Python Data Structures)】Week 4 | Chapter 8 题目汇总
  4. C++练习小写变大写
  5. 福建省一级计算机考试文字录入,2015福建省机关事业工勤人员计算机文字录入员工作总结.doc...
  6. android html字体大小,android Html.fromHtml font 标签支持设置字体大小和颜色
  7. 7-31 求圆周长和面积
  8. KVM虚拟化安装的虚拟机全屏设置
  9. python小游戏——俄罗斯方块
  10. 水星mr807虚拟服务器,水星MR807路由器怎么连接Internet上网