05 第六组(10个) sorted enumerate callable id len range open input
第六组(10个)
- len
- input
- open, 文件
- range
py2:
v1= rang(10) #会生成 列表[0....9] 立即创建
v1= xrang(10) #生成对象 不会立即创建,只有使用循环时,进行创建,用一个进行创建一个,更节省内存
py3:
v1= rang(10) #会生成 列表[0....9] #生成对象 不会立即创建
v2= list(rang(10)) #通过list转换,立即生成 列表[0....9] 会立即创建
- type 查看数据类型
v1 = 123
type(v1) == int:
pass
- id 查看数据内存地址(不要太较真)
-id 表示内存地址
-Python内部会缓存和驻留机制,Python内部小数据,使用缓存机制,-1 到255 在内存中不进行创建多份内存地址, 而是使用同一个内存地址,
如果数据比较大时,内存地址不使用缓存机制
- callable,是否可执行
def func():
pass
data_list = [11,22,33,44,func,func]
print(callable(data_list [-1] ))#如果判断,这个函数可以执行,就可以在后面进行增加(),可以使用:callable 进行判断,此处返回:True
#如下面,则返回的是False
v1 = 123
print(callable(v1)) #False
- enumerate,循环过程中,自动生成一列数据(比如:序号
goods = ['飞机','坦克','迫击炮']
#常规生成序号:
# 方法1
goods = ['飞机', '坦克', '迫击炮']
id = 1
for item in goods:
print(id, item)
id = id + 1
# 方法2 使用:enumerate 进行生成
for id, item in enumerate(goods, 10): #其中10 ,表示从10开始,序号为:10/11/12
print(id + 1, item)
- sorted ,排序(不会修改原来数据,生成新数据)
#数据排序
num_list = [0, -1, 11, 88, 79, 66]
v1 = sorted(num_list, reverse=True) # reverse=True 表示按倒序进行排序
print(v1) #[88, 79, 66, 11, 0, -1]
#字符串排序 是按字符串的首字母进行排序
name_list = ['Alex', "test", 'eric']
print(sorted(name_list)) #['Alex', 'eric', 'test']
易错点:
字符串形式的数字
易错点:
- 数据和字符串是没办法进行比较大小
- 字符串形式的数字,比较大小
def func(x):
return int(x.split(" ")[0])
print(sorted(name_list, key=func))
排序案例-sorted
- 展示目录下面的所有文件,并进行排序
def func(x):
return int(x.split(" ")[0])
file_path = 'day04-homework_列表.py'
name_list = os.listdir(file_path)
for item in sorted(name_list,key=func):
print(item)