range(), enumerate(), zip()
python range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法
range(start, stop[, step])
参数说明:
* start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
* stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;
* step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
>>>range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
描述:
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
语法:
enumerate(sequence, [start=0])
- sequence – 一个序列、迭代器或其他支持迭代对象。
- start – 下标起始位置
返回值:
返回enumerate(枚举)对象 是个列表?
实例:
以下展示了使用 enumerate() 方法的实例:
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
enumerate()使用
- 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1 = ["这", "是", "一个", "测试"]
for i in range (len(list1)):
print i ,list1[i]
>>>
0 这
1 是
2 一个
3 测试
- 上述方法有些累赘,利用enumerate()会更加直接和优美:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
>>>
0 这
1 是
2 一个
3 测试
- enumerate()函数还有一个重要的用法。
a=["q","w","e","r"]
b=dict() # 创建一个空字典
for i,item in enumerate(a): # 这里i表示的是索引,item表示的是它的值
b[i]=item
print(b)
输出:{0: 'q', 1: 'w', 2: 'e', 3: 'r'}
---------------------
作者:neu_张康
来源:CSDN
原文:https://blog.csdn.net/csdn15698845876/article/details/73302450
版权声明:本文为博主原创文章,转载请附上博文链接!
补充
- 如果要统计文件的行数,可以这样写:
count = len(open(filepath, 'r').readlines())
这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。
- 可以利用enumerate():
count = 0
for index, line in enumerate(open(filepath,'r')):
count += 1
zip()
描述
zip() 函数用于将可迭代的对象作为参数
将对象中对应的元素打包成一个个元组
然后返回由这些元组组成的对象
我们可以使用 list() 转换来输出列表。(列表的元素是元祖)
与python2不同,如需展示列表,需手动 list() 转换。
语法
zip([iterable, ...],[···])
实例
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
my_zip = list(zip(['a', 'b', 'c'], [1, 2, 3]))
print(my_zip)
# [('a', 1), ('b', 2), ('c', 3)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
正如 range() 一样,我们需要将其转换为列表或使用循环进行遍历以查看其中的元素
letters = ['a', 'b', 'c']
nums = [1, 2, 3]
for letter, num in zip(letters, nums):
print("{}: {}".format(letter, num))
输出:
a: 1
b: 2
c: 3
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>
for x,y in zip(range(len(values)), values):
# range(len(values)=[0,1,2,3,4]
# values=[0.97,0.98,0.99,0.95,0.56]
除了可以将两个列表组合到一起之外,还可以使用星号拆封列表,返回的是单个元组
some_list = [('a', 1), ('b', 2), ('c', 3)]
letters, nums = zip(*some_list)
print(letters)
# ('a', 'b', 'c')
print(nums)
# (1, 2, 3)
os
Python3 标准库
操作系统接口
os模块提供了不少与操作系统相关联的函数。
>>> import os
>>> os.getcwd() # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs') # 修改当前的工作目录
>>> os.system('mkdir today') # 执行系统命令 mkdir
os.path.join(path1[, path2[, ...]])
import os
print( os.path.basename('/root/runoob.txt') ) # 返回文件名
print( os.path.dirname('/root/runoob.txt') ) # 返回目录路径
print( os.path.split('/root/runoob.txt') ) # 分割文件名与路径
print( os.path.join('root','test','runoob.txt') ) # 将目录和文件名合成一个路径
runoob.txt
/root
('/root', 'runoob.txt')
root/test/runoob.txt