Python之高级特性

当我们想取出来一个list中的某几个元素的时候,常常会用掉切分,考虑这样一种情况,我们要取出来一个list中的前三个元素,简单的办法是[L[0],L[1],L[2]],但是这样的写法太过于繁琐,而且要是我们想取出前100个数字,就要写100次,这样肯定是不可取的,针对这种情况,通常的解决办法是使用循环的方式。然而,循环的方式往往需要付出额外代价,Python中使用切分来实现这种需求,如下:

这里需要注意的是,test[0:3]当中并不包含test[3],它的真实含义是,从下标为0的元素开始,直到索引3为止,但是不包含索引3。切记不要理解为连续取3个数字。

为了方便,如果下标是从0开始的,我们可以直接省略0,写成,test[:3],如下:

前面我们讲过了list的倒数第一个元素可以用-1的下标来表示,这里我们同样可以用负数的下标来做切片,如下:

同样,省略最终的下标,则python会输出到这个list的末尾。

除此之外,设想这样一种情况,我们想要取出来一个list中的所有偶数下标,就需要每隔2个数字取一个下标,我们可以这样写:list[:10:2],表示从第一个数字到第九个数字,每隔2个数取一个,如下:

当我们需要对整个list每隔3个数字取一个,则可以使用list[::3]的方法。

同样,这样的切片操作,可以用在tuple和一般的字符串上面:

迭代

在Python中,迭代是使用for...in...来完成的,Python的for循环和C++的for循环有一些不同,它的抽象程度相对更高,它可以对一些没有下标的数据类型进行迭代,例如dict这种的:

我们可以直接通过一个for循环打印dic中的key,但是从结果进行分析,输入的key顺序是XiaoMing、XiaoZhang、Xiaowang,但是输出的顺序并不相符,这是因为dict默

情况下是没有顺序的,也就不存在下标的概念。

当我们需要打印出来每一个key对应的value时,需要使用如下语句:

当我们需要打印dict中的key和value时,需要使用如下语句:

同样的,字符串、list、tuple都是可迭代的对象,都可以使用迭代的方法进行迭代。

在迭代元素的过程中,我们有时候想要把元素下标和元素本身都输出出来,这个时候,我们可以使用python内置的enumerate函数来把一个可迭代对象变为一个索引-元素对,这样就可以同时迭代索引和元素本身,如下:

收藏 打印