range()函数配合循环一块使用很方便,今天来整理一下这个函数的主要用法,以及几个小例子
首先来看一下函数原型,非常简单:
1
|
range (start,end [,step])
|
或者连start都省略掉:
1
|
range (end)
|
其中,start表示开始点,end表示结束点,真正结束的位置是end的前一个值,step表示步长。
例如:
1
2
3
4
|
print ( list ( range ( 1 , 5 )))
#list函数是将range的值列表化,这时候的输出为 1,2,3,4 (没有5!即不包括最后一个end的值)
print ( list ( range ( 1 , 5 , 2 )))
#输出结果是 [1, 3] ,步长为2,而且小于5
|
如果只传入一个参数:
1
2
|
print ( list ( range ( 5 )))
#输出结果是 [0, 1, 2, 3, 4] ,这时候默认从0开始
|
rang的这些使用,我们可以同列表的遍历结合起来,比如对一个列表进行遍历访问:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#首先我用一个range生成一个列表,其中包含0~9 10个元素
list1 = list ( range ( 10 ))
# #使用range的方式进行遍历:
for i in range ( len (list1)):
print (list1[i])
#当然这种情况我们一般都是直接使用 for value in list1 就可以了
#如果使用切片,访问列表的一部分
for i in range ( int ( len (list1) / 2 )):
print (list1[i])
#这样我们就可以得到列表中前一半元素,其他部分同理
|
有的时候我们还会用到一个列表的逆序,使用range可以这样:
1
2
3
4
5
|
list1 = list ( range ( 10 ))
for i in range ( len (list1) - 1 , 0 , - 1 ):
print (list1[i])
#注意这个地方开始的位置是len-1,因为我们使用的列表的下标,其实这里的使用与C语言是一致的,步长设置为-1
#就相当于我们在for循环的 i--了
|
使用循环的方式,我们可以在每次循环中对数据进行一些操作,但是如果仅仅是得到这些数据,我们可以利用列表的切片slide来做,切片的方式非常灵活,例如比较简单的:
1
2
3
4
5
6
7
8
9
|
list1 = list ( range ( 10 ))
print (list1[:])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print (list1[ 3 :])
# [3, 4, 5, 6, 7, 8, 9]
print (list1[ 3 : 5 ])
# [3, 4]
print (list1[ 1 : 5 : 2 ])
# [1, 3]
|
从这里我们可以看出切片的使用方式与range大同小异,都是三个参数,分别控制开始,结束以及步长,在range中我们可以使用 -1 ,那么同理,在切片中,同样如此,对于每一个列表项,不仅仅有一个正向的序号,还有一个反向的序号,最后一个元素可以使用list1[-1]来表示,倒数第二个元素就是list1[-2]….:
1
2
|
print (list1[ 1 : - 1 ])
# 这里表示从第一个元素到最后一个元素
|
如果逆序输出的话:
1
2
3
|
print (list1[ - 1 :: - 1 ])
#或者简记为:
print (list1[:: - 1 ])
|
接下来是我之前遇到的一个问题,如何在一个列表中保存A-Z或者Z-A?
1
2
3
4
5
6
7
|
list2 = []
for i in range ( ord ( 'A' ), ord ( 'A' ) + 26 ):
list2.append( chr (i))
print (list2)
list3 = [ chr ( ord ( 'A' ) + x) for x in range ( 26 )]
print (list3)
|
这两种方法都可以生成一个包含A-Z的列表,对于这个问题,如果使用过其他语言,首先可能会使用int(‘A')获取A的ASCII,但是在Python中却会报错,因为这里int()函数是默认基与十进制的,对于字母转化为数字,有函数ord可以使用,有字母转化回ASCII则可以使用chr()函数,第二种方式是使用了列表生成式的方式,写起来比较简单,除了这些方法之外,还可以使用map()函数对列表的每一个值进行处理,在此不再介绍。
以上这篇Python 中的range(),以及列表切片方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/sinat_34328764/article/details/79073160