ITPub博客

首页 > 数据库 > Oracle > [基础] 序列却片

[基础] 序列却片

原创 Oracle 作者:幕南风 时间:2014-07-03 14:13:47 0 删除 编辑

我们为什么需要却片?

[root@DataHacker Desktop]# cat slice.py 
#!/usr/bin/env python

import sys
print sys.argv
[root@DataHacker Desktop]# python slice.py -a -b -c
[\'slice.py\', \'-a\', \'-b\', \'-c\']

但通常,我们只对输入的参数感兴趣,所以:
[root@DataHacker Desktop]# cat slice.py
#!/usr/bin/env python

import sys
print sys.argv[1:]
[root@DataHacker Desktop]# python slice.py -a -b -c
[\'-a\', \'-b\', \'-c\']

之后,也只要处理这个参数列表即可

SHELL中的文本却片是怎样的?


[root@DataHacker ~]# str="love python dig mysql"
[root@DataHacker ~]# echo ${str:5:10}
python dig

我们是通过指定字符串的起始位置和长度来生成子串,语法如下:
${variable_name:start_position:length}

Python中字符串却片是怎样的?


作用大抵也是相同,都能够用于分离数据,语法如下:
VAR[X:Y:Z]:表示从X到Y-1,每隔Z元素索引一次,其中,Z是步长也是方向,例如:

In [1]: str = "hello"

In [2]: str[::-1]
Out[2]: \'olleh\'

负数表示从右到坐走

那么,list 却片又是怎样的?

>>> # 关于切片的理解,记得一本书上的解释,有助理解,共享!
>>> # 初始一个 list a
>>> a=[1,2,3,4,5,6]
>>> a[5]
6
>>> a[-1]
6
>>> a[0:5]
[1, 2, 3, 4, 5]
>>> a[-1:-2]
[]
>>> a[-2:-1]
[5]
>>> # 我们这样理解,对于 list a
>>> # 元素 1 左侧有 0 号挡板
>>> # 元素 2 左侧有 1 号挡板
>>> # 元素 3 左侧有 2 号挡板
>>> # 元素 4 左侧有 3 号挡板
>>> # 元素 5 左侧有 4 号挡板
>>> # 元素 6 左侧有 5 号挡板
>>> # 进一步:
>>> # 元素 6 左侧有 -1 号挡板
>>> # 元素 5 左侧有 -2 号挡板
>>> # 元素 4 左侧有 -3 号挡板
>>> # 元素 3 左侧有 -4 号挡板
>>> # 元素 2 左侧有 -5 号挡板
>>> # 元素 1 左侧有 -6 号挡板
>>> # 开始
>>> # a[-6:-3],-6板到-3板之间,那就是 元素1左侧 到 元素4左侧,包括:1、2、3,测试下
>>> a[-6:-3]
[1, 2, 3]
>>> # a[:-5], 从0号板开始,到-5号板(元素2左侧),包括:1,测试下
>>> a[:-5]
[1]
>>> # 理解了,OK!

在Python里,list却片与字符串却片哪里不同?


In [3]: L1 = [1,2,3]

In [4]: L2 = L1[:]

In [5]: L2
Out[5]: [1, 2, 3]

In [6]: L1[1] = 5

In [7]: L1
Out[7]: [1, 5, 3]

In [8]: L2
Out[8]: [1, 2, 3]

可见,list却片返回的是一个新的list,我们也可以用 is 验证:
In [9]: L1 is L2
Out[9]: False


list却片的运用


list切片有个比较好的运用,是for循环总是按照元素在list中出现的顺序依次迭代,如果我们想要更改迭代的序列
此时用list切片制作一个副本是个很好的选择,例子:
In [10]: str = [\'Python\',\'SQL\',\'SHELL\',\'Perl\']

In [11]: for i in str[:]:
   ....:     if len(i) > 3:
   ....:         print i
   ....:         
Python
SHELL
Perl


By DataHacker
2014-2-10
Good Luck!


<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1208259/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Python是朵两生花
下一篇: MySQL Schema设计(五)用Python管理字符集
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章