python基础学习笔记(三)

系统 1512 0

python基础学习笔记(三)

2013-04-18 00:22  虫师 阅读( ... ) 评论( ... ) 编辑 收藏

 

序列概览

  Python  包含 种内建的序列,这里重点讨论最常用的两种类型:列表和元组。

  列表与元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么列表可以会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适。

在操作一组数值的时候,序列很好用。可以用序列表示数据库中一个人的信息 --- 第一 1 是姓名,第 2 个元素是年龄。根据上述内容编写一个列表。

                >>> hu=[
                
                  '
                
                
                  huhu
                
                
                  '
                
                ,25]
              

 

同时,序列也可以包含其他的序列,因此,构建如下一个人员的信息的列表也是可的,这个列表就是你的数据库:

                >>> huhu = [
                
                  '
                
                
                  huhu
                
                
                  '
                
                ,25
                
                  ]

                
                >>> chongshi = [
                
                  '
                
                
                  chongshi
                
                
                  '
                
                ,32
                
                  ]

                
                >>> database =
                
                   [huhu,chongshi]

                
                >>>
                
                   database
[[
                
                
                  '
                
                
                  huhu
                
                
                  '
                
                , 25], [
                
                  '
                
                
                  chongshi
                
                
                  '
                
                , 32]]
              

 

 

通用序列操作

  所有序列类型都可以进行某些特定的操作。这些操作包括:索引( indexing )、分片( sliceing )、加( adding )、乘( multiplying )以及检查某个元素是否属于序列的成员(成员资格)。

 

索引

序列中的所有元素都是有编号的 ----- 开始递增。这些元素可以通过编号分别访问,如下所示:

                >>> greeting = 
                
                  '
                
                
                  chongshi
                
                
                  '
                
                
>>>
                
                   greeting[0]

                
                
                  '
                
                
                  c
                
                
                  '
                
                
>>> greeting[2
                
                  ]

                
                
                  '
                
                
                  o
                
                
                  '
                
              

 

使用负数索引时, python  会从右边,也就是从最后 1 个元素开始计数。最后 1 个元素的位置编号是 -1  (不是 -0 , 因为那会和第 1 个元素重合):

                >>> greeting = 
                
                  '
                
                
                  chongshi
                
                
                  '
                
                
>>> greeting[-1
                
                  ]

                
                
                  '
                
                
                  i
                
                
                  '
                
                
>>> greeting[-2
                
                  ]

                
                
                  '
                
                
                  h
                
                
                  '
                
              

 

当然,我们也可以通过另一种方式使用所引,两种方式的效果是一样的:

                >>> 
                
                  '
                
                
                  chongshi
                
                
                  '
                
                
                  [0]

                
                
                  '
                
                
                  c
                
                
                  '
                
                
>>> 
                
                  '
                
                
                  chongshi
                
                
                  '
                
                [-1
                
                  ]

                
                
                  '
                
                
                  i
                
                
                  '
                
              

 

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。例如,假设只对用户输入年份的第 4 个数字感兴趣,那么,可以进行如下操作:

                >>> fourth = raw_input(
                
                  '
                
                
                  year:
                
                
                  '
                
                )[3
                
                  ]
year:
                
                2013
>>>
                
                   fourth

                
                
                  '
                
                
                  3
                
                
                  '
                
              

提示:请试着敲击代码,更能助帮你理解。不要懒得动手。

 

索引示例:

                
                  #
                
                
                  根据给定的年月日以数字形式打印出日期
                
                
months =
                
                   [
    
                
                
                  '
                
                
                  January
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  February
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  March
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  April
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  May
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  June
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  July
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  August
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  September
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  October
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  November
                
                
                  '
                
                
                  ,
    
                
                
                  '
                
                
                  December
                
                
                  '
                
                
                  
    ]

                
                
                  #
                
                
                  以1-31的数字作为结尾的列表
                
                
endings = [
                
                  '
                
                
                  st
                
                
                  '
                
                ,
                
                  '
                
                
                  nd
                
                
                  '
                
                ,
                
                  '
                
                
                  rd
                
                
                  '
                
                ]+ 17*[
                
                  '
                
                
                  th
                
                
                  '
                
                
                  ]\
           
                
                +[
                
                  '
                
                
                  st
                
                
                  '
                
                ,
                
                  '
                
                
                  nd
                
                
                  '
                
                ,
                
                  '
                
                
                  rd
                
                
                  '
                
                ]+ 7*[
                
                  '
                
                
                  th
                
                
                  '
                
                
                  ]\
           
                
                +[
                
                  '
                
                
                  st
                
                
                  '
                
                
                  ]
year  
                
                =raw_input(
                
                  '
                
                
                  year:
                
                
                  '
                
                
                  )
month 
                
                =raw_input(
                
                  '
                
                
                  month(1-12):
                
                
                  '
                
                
                  )
day   
                
                =raw_input(
                
                  '
                
                
                  day(1-31)
                
                
                  '
                
                
                  )

month_number 
                
                =
                
                   int(month)
day_number 
                
                =
                
                   int(day)


                
                
                  #
                
                
                  记得要将月份和天数减1,以获得正确的索引
                
                
month_name = months[month_number-1
                
                  ]
ordinal 
                
                = day + endings[day_number - 1
                
                  ]


                
                
                  print
                
                 month_name + 
                
                  '
                
                
                   ,
                
                
                  '
                
                 + ordinal + 
                
                  '
                
                
                   ,
                
                
                  '
                
                 +
                
                   year
-----------------------------------------------
输入:

                
                >>>
                
                   
year:
                
                2013
                
                  
month(
                
                1-12):4
                
                  
day(
                
                1-31)14
                
                  
输出:
April ,14th ,
                
                2013
              

 

分片

与使用索引来访问单个元素类似,可以使用分片操作来访问一琮范围内的元素。分片通过冒号相隔的两个索引来实现:

                >>> tag = 
                
                  '
                
                
                  
                    Python web site
                  
                
                
                  '
                
                
>>> tag[9:30]   
                
                  #
                
                
                   取第9个到第30个之间的字符
                
                
                  '
                
                
                  http://www.python.org
                
                
                  '
                
                
>>> tag[32:-4]   
                
                  #
                
                
                  取第32到第-4(倒着数第4个字符)
                
                
                  '
                
                
                  Python web site
                
                
                  '
                
                
>>> 
              

 

如果求 10 个数最后三个数:

                >>> numbers = [0,1,2,3,4,5,6,7,8,9
                
                  ]

                
                >>> numbers[7:-1]   
                
                  #
                
                
                   从第7个数到 倒数第一个数
                
                
[7, 8]              
                
                  #
                
                
                  显然这样不可行
                
                
>>> numbers[7:10]   
                
                  #
                
                
                  从第7个数到第10个数
                
                
[7, 8, 9]            
                
                  #
                
                
                  这样可行,索引10指向的是第11个元素。
                
                
>>> numbers[7:]    
                
                  #
                
                
                   可以置空最后一个索引解决
                
                
[7, 8, 9
                
                  ]

                
                >>> numbers[:3
                
                  ]   
[0, 
                
                1, 2
                
                  ]

                
                >>>
                
                   numbers[:]
[0, 
                
                1, 2, 3, 4, 5, 6, 7, 8, 9]
              

 

分片示例:

                
                  #
                
                
                    对http://fnng.cnblogs.com形式的URL进行分割
                
                
                  
url 
                
                = raw_input(
                
                  '
                
                
                  Please enter the URL:
                
                
                  '
                
                
                  )
domain 
                
                = url[11:-4
                
                  ]


                
                
                  print
                
                
                  "
                
                
                  Domain name:
                
                
                  "
                
                 +
                
                   domain
------------------------------------------
                  
输入:
>>> Please enter the URL:http: // fnng.cngblogs.com 输出: Domain name:.cngblogs

 

更大步长:

                >>> numbers = [0,1,2,3,4,5,6,7,8,9
                
                  ]

                
                >>> numbers[0:10:1]   
                
                  #
                
                
                  求0到10之间的数,步长为1
                
                
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9
                
                  ]

                
                >>> numbers[0:10:2]   
                
                  #
                
                
                  步长为2
                
                
[0, 2, 4, 6, 8
                
                  ]

                
                >>> numbers[0:10:3]   
                
                  #
                
                
                  步长为3
                
                
[0, 3, 6, 9]
              

 

序列相加

通过使用加号可以进行序列的连接操作:

                >>> 
                
                  '
                
                
                  hello.
                
                
                  '
                
                +
                
                  '
                
                
                  world!
                
                
                  '
                
                
                  '
                
                
                  hello.world!
                
                
                  '
                
                
>>> [1,2,3] + 
                
                  '
                
                
                  world!
                
                
                  '
                
                
                  

Traceback (most recent call last):
  File 
                
                
                  "
                
                
                  
                
                
                  "
                
                , line 1, 
                
                  in
                
                
                  
                    
    [
                  
                  1,2,3] + 
                  
                    '
                  
                  
                    world!
                  
                  
                    '
                  
                  
                    
TypeError: can only concatenate list (
                  
                  
                    not
                  
                  
                    "
                  
                  
                    str
                  
                  
                    "
                  
                  ) to list
                
              

 

正如错误提示,列表和字符串是无法连接接在一起的,尽管它他们都是序列。简单来说,两种相同类型的序列才能进行连接操作。

 

乘法

                >>> 
                
                  '
                
                
                  python 
                
                
                  '
                
                 * 5

                
                  '
                
                
                  python python python python python 
                
                
                  '
                
                
>>> [25] * 10
                
                  
[
                
                25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
              

 

如果想创建一个占用十个元素空间,却不包括任何有用的内容的列表,可以用 Nome

                >>> sequence = [None] * 10
>>>
                
                   sequence
[None, None, None, None, None, None, None, None, None, None]
                
              

 

序列(字符串)乘法示例:

                
                  #
                
                
                   以正确的宽度在居中的“盒子”内打印一个句子
                
                
                  #
                
                
                   注意,整数除法运算符(//)只能用在python 2.2 以及后续版本,在之前的版本中,只能用普通除法(/)
                
                
                  
sentence 
                
                = raw_input(
                
                  "
                
                
                  Sentence : 
                
                
                  "
                
                
                  )

screen_width 
                
                = 80
                
                  
text_width 
                
                =
                
                   len(sentence)
box_width 
                
                = text_width + 6
                
                  
left_margin 
                
                = (screen_width - box_width) //2


                
                  print
                
                
                  print
                
                
                  '
                
                
                  '
                
                 * left_margin + 
                
                  '
                
                
                  +
                
                
                  '
                
                 + 
                
                  '
                
                
                  -
                
                
                  '
                
                 * (box_width - 2)+ 
                
                  '
                
                
                  +
                
                
                  '
                
                
                  print
                
                
                  '
                
                
                  '
                
                 * left_margin + 
                
                  '
                
                
                  |  
                
                
                  '
                
                 + 
                
                  '
                
                
                  '
                
                 * text_width    + 
                
                  '
                
                
                    |
                
                
                  '
                
                
                  print
                
                
                  '
                
                
                  '
                
                 * left_margin + 
                
                  '
                
                
                  |  
                
                
                  '
                
                 +     sentence        + 
                
                  '
                
                
                    |
                
                
                  '
                
                
                  print
                
                
                  '
                
                
                  '
                
                 * left_margin + 
                
                  '
                
                
                  |  
                
                
                  '
                
                 + 
                
                  '
                
                
                  '
                
                 * text_width    + 
                
                  '
                
                
                    |
                
                
                  '
                
                
                  print
                
                
                  '
                
                
                  '
                
                 * left_margin + 
                
                  '
                
                
                  +
                
                
                  '
                
                 + 
                
                  '
                
                
                  -
                
                
                  '
                
                 * (box_width - 2)+ 
                
                  '
                
                
                  +
                
                
                  '
                
                
                  
---------------------------------------------------------
输入:
>>> Sentence : haha! this is my box 输出: +------------------------+ | | | haha! this is my box | | | +------------------------+

 

 

成员资格

 为了检查一个值是否在序列中,可以使用 in  运算符。该运算符和之前已经讨论过的(例如  ,  运算符)有一点不同。这个运算符检查某个条件为真或假的( True or False  )。

in 运算符的例子:

                >>> permissions = 
                
                  '
                
                
                  rw
                
                
                  '
                
                
>>> 
                
                  '
                
                
                  w
                
                
                  '
                
                
                  in
                
                
                   permissions
True

                
                >>> 
                
                  '
                
                
                  y
                
                
                  '
                
                
                  in
                
                
                   permissions
False

                
                >>> users = [
                
                  '
                
                
                  zhangsan
                
                
                  '
                
                , 
                
                  '
                
                
                  lisi
                
                
                  '
                
                ,
                
                  '
                
                
                  wangwu
                
                
                  '
                
                
                  ]

                
                >>> raw_input(
                
                  '
                
                
                  Enter your user name: 
                
                
                  '
                
                ) 
                
                  in
                
                
                   users
Enter your user name: lisi
True

                
                >>> subject =
                
                  '
                
                
                  $$$ Get rich now!!! $$$
                
                
                  '
                
                
>>> 
                
                  '
                
                
                  $$$
                
                
                  '
                
                
                  in
                
                
                   subject
True
                
              

 

长度、最小值和最大值  

内建函数 len min  max  非常有用。 Len 函数返回序列中所包含元素的数量。 Min 函数和 max 函数则分别返回序列中最大和最小的元素。

                >>> numbers = [100,34,678
                
                  ]

                
                >>>
                
                   len (numbers)

                
                3
>>>
                
                   max(numbers)

                
                678
>>>
                
                   min(numbers)

                
                34
>>> max(2,3
                
                  )

                
                3
>>> min(9,3,2,5
                
                  )

                
                2
              

 

 

----------------

都是零零碎碎的东西,没什么难度,打python shell敲击一下就理解是什么意思了。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论