1. 枚举
描述:针对一个可迭代/可遍历的对象,将其组成一个索引序列,同时可以获取其索引和值,也可以手动指定索引的起始值,默认的起始值是0。
list_enumerate = ['liyan', 1314, 'yy', True, 'yange']
for i in enumerate(list_enumerate):
print(i)
print('------------')
for i, j in enumerate(list_enumerate):
print(i, j)
print('------------')
for num, info in enumerate(list_enumerate, 101):
print('{}---{}'.format(num, info))
>>>
(0, 'liyan')
(1, 1314)
(2, 'yy')
(3, True)
(4, 'yange')
------------
0 liyan
1 1314
2 yy
3 True
4 yange
------------
101---liyan
102---1314
103---yy
104---True
105---yange
2. 变量值的互换
# 把以下变量a与b的值互换
a = '123'
b = 'abc'
print('转换前a的值是: {}'.format(a))
print('转换前b的值是: {}'.format(b))
print('------------')
a, b = b, a
print('转换后a的值是: {}'.format(a))
print('转换后b的值是: {}'.format(b))
>>>
转换前a的值是: 123
转换前b的值是: abc
------------
转换后a的值是: abc
转换后b的值是: 123
3. id方法
id():可以获取数据类型的内存地址
var = '123'
print(var, type(var), id(var))
lis = ['a', 1, False]
print(id(lis))
>>>
123 <class 'str'> 2704990696200
2704989882888
4. == 和 is 的区别
-
is : 比较的是内存大小
-
== : 比较的是值
-
说明:
-
数值型和字符串类型的内存地址都有自己的小数据池
-
int类型的范围是'-5~256',创建相同的数字在这个范围内,系统都会指向同一个内存地址
-
str类型中创建相同的字符串中有空格,系统会指向不同的内存地址,其他都是指向同一个(在python的终端命令行可以看到结果)
-
其他类型的都会指向不同的内存地址
-
示例:
str1 = 'abc'
str2 = 'abc'
int1 = 100
int2 = 100
list1 = [1, 'a', False]
list2 = [1, 'a', False]
dict1 = {'name': 'yan', 10: 'yy'}
dict2 = {'name': 'yan', 10: 'yy'}
print(str1 == str2)
print(str1 is str2)
print('------------')
print(int1 == int2)
print(int1 is int2)
print('------------')
print(list1 == list2)
print(list1 is list2)
print('------------')
print(dict1 == dict2)
print(dict1 is dict2)
>>>
True
True
------------
True
True
------------
True
False
------------
True
False
# 数值型:
int1 = 100
int11 = 100
int2 = -5
int22 = -5
int3 = -6
int33 = -6
int4 = 256
int44 = 256
int5 = 257
int55 = 257
print(id(int1), id(int11))
print('------------')
print(id(int2), id(int22))
print('------------')
print(id(int3), id(int33))
print('------------')
print(id(int4), id(int44))
print('------------')
print(id(int5), id(int55))
>>>
1939762496 1939762496
------------
1939759136 1939759136
------------
1989955513520 1989955513552
------------
1939767488 1939767488
------------
1989954285264 1989954285264
# 字符串型:
str1 = 'aaa'
str11 = 'aaa'
print(id(str1), id(str11))
print(str1 == str11)
print(str1 is str11)
>>>
2769177244872 2769177244872
True
True
5. 编码
-
字符串的表现形式是b'字符串',内部存储是unicode编码,所有字符占用4个字节
-
utf-8的表现形式是b'十六进制',一个中文字符占用3个字节(一个\x十六进制代表一个字节,一个中文字符占用了三个十六进制位,eg:b'\xe6\x9d\x8e')
-
gbk的表现形式是b'十六进制',一个中文字符占用2个字节(一个\x十六进制代表一个字节,一个中文字符占用了两个十六进制位,eg:b'\xc0\xee')
-
encode:可以把unicode编码转为utf-8或gbk编码
-
示例:
s1 = 'abc'
print(s1.encode('utf-8'))
print(s1.encode('gbk'))
print('------------')
s2 = '李岩'
print(s2.encode('utf-8'))
print(s2.encode('gbk'))
>>>
b'abc'
b'abc'
------------
b'\xe6\x9d\x8e\xe5\xb2\xa9'
b'\xc0\xee\xd1\xd2'