变量(variable)是储存数据的实体,在Python中也被称为"名称"(name)。

  1.Python"名称"基本命名法则

    1.1) "名称"不能是Python的内置词(保留字、关键字)。

    1.2) "名称"由数字、下划线、字母组成。

   Python关键字表以及其余约定俗称的规则将在另一篇文章中详细阐述。

  原文的排版也是醉了,讲名称时又讲起了内置数据类型。为了尊重原文,所以下面还是谈谈Python的另外几种基本数据类型:元组、列表、集合、字典。

  2.序列类型(Sequence Types)-----元素有序,元素可重复

   2.1) Tuple 元组

   元组是不可变有序数据序列,一旦创建元组内容将无法再被修改。元组是值的序列,每个值都可以被单独访问。Python语言没有内置的数组类型(Array Type),但是我们可以通过Tuple来实现类似Java中Array的功能。而且元组的元素可以为任何Python合法数据,类似于Java的泛型机制。下面总结一下元组的特征:

     a) 属于Python序列大类。Python的序列支持切片操作,因此元组也支持切片(Slice)操作(PS:Matlab也支持切片操作)。

 #  元组支持切片操作
# array[start:end:inc]
# start表示开始索引位置,end表示结束索引位置(不包括),inc表示增益 >>> array = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
>>> array[0:1]
((1, 2, 3),)

Tuple supports slice operation

     b) 类似于Java中的数组。支持通过下标索引获取数据,索引范围为0~len(array)-1。不过比Java更进了一步,Python支持了负索引,因此Python索引范围是-len(array)~len(array)-1。如果超出索引范围,会有IndexError提示。注意:元组中的索引是自动产生的,类似于字典中的键,当然索引可以是键。

 #  元组支持通过索引寻址
# 一般来说,如果只是序列,寻址的索引是自动生成的整数 >>> array = ('one', 'two', 'three', 'four', 'five')
>>> array[0]
'one'
>>> array[-5]
'one'
>>> array[-6]
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
array[-6]
IndexError: tuple index out of range

Tuple supports index address

     还有,Python元组支持类似Java的多维数组。当然多维数组包括了规则多维数组和不规则多维数组。

 #  元组支持类似Java多维数组的多维形式
# 包括规则、不规则的多维类型 >>> array = ((True, 'two', 3.0), ['one', 2, 0.3e1], {'one':1, 'two':2, 'three':3})
>>> array[0][0]
True
>>> arr[1][0]
'one'
>>> array[2]['one']
1
>>> array[2]
{'one':1, 'two':2, 'three':3}

Tuple supports multidimensional Types

     c) Python默认为元组类型情况。如果在无"()"作为分隔符且存在以","作为中间分隔时,默认为元组。

        >>> x = 1, 2, 3  结果为:(1, 2, 3) 由逗号分隔的序列默认为元组序列

     d) 元组的内置函数     

     Python元组包含以下内置函数:
       cmp(tuple1, tuple2)  # 比较两个元组元素 
       len(tuple)           # 计算元组元素个数 
       max(tuple)           # 返回最大元组元素   min(tuple)           # 返回最小元组元素   
       tuple(list)          # 将列表转换为元组

     e) 元组的基本概念

     元组的创建:

       >>> tup = () # 创建空元组

       >>> tup = ('one',) # 创建单元素元组时加","表明tup数据类型为元组,而不是单个元素的数据类型.

       >>> tup = ('one', 'two')

       想当然地创建元组失败:

       >> tup = ('one') #"()"既是算术括号,也是元组符号,在此处等价tup = 'one'属于字符串类型

       元组创建时可以进行组合、截取等操作,从而创建新元组

         >>> tup1 = ('one', 'two', 'three')   tup2 = tup1[0:2]

     元组的访问寻址:

       元组的访问寻址可以通过索引和切片,上文已经阐述,因此不再赘述。

     元组的更新:

       元组是不可变的有序序列。因此元组一旦被创建,则不能够再被修改。但是我们可以通过元组运算符"+"和"*"来对元组进行组合,不过这种组合的本质实际上是创建了新的元组。

 >>> tup1 = (1, 2)
>>> tup2 = (3, 4)
>>> tup3 = tup1 + tup2
>>> tup4 = tup1 + 2*tup2
>>> print tup3
(1, 2, 3, 4)
>>> print tup4
(1, 2, 3, 4, 3, 4)

Tuple elements alter

     元组的删除:

       虽然无法删除元组元素,但是可以使用del删除整个元组。注意:del tuple和空元组是不同的概念,一个是空集,一个是连空集都谈不上。

       >>> del tup # 删除tup后,tup变成了undefined. 如果再次输出tup,则会有NameError.

     元组的拷贝:

       >>> tup2 = tup1

       >>> tup2 = tup1(:)

       >>> tup2 = tuple(tup1) # 构造函数拷贝

   2.2) List 列表

   列表是可变有序数据序列,列表在创建后仍然能够再修改。列表和元组一样都是值的序列,每个值都可以被单独访问,只不过列表的序列可以改变。Python语言的列表和Java集合中的ArrayList<E e>类似,具有类似Java泛型机制的意味。或者也可以认为类似于ANSI C++中的Vector。

   List和Tuple十分相似,下面仅介绍List相较于Tuple不同的特征,当然兼顾和介绍元组时的格式对称:

   a) 列表的创建

      >>> li = []   # 创建空列表

      >>> li = range(start,end,inc) # 创建有序列表   >>> li = range(end) # start和inc均可省略取默认值,start=0,inc=1

      >>> li = ['one'] # 创建单元素列表   >>> li = ['one', 'two'] # 创建双元素列表

   b) 列表的访问寻址  与元组类似,不再赘述

   c) 列表的更新

     介绍一些常用列表函数

 #!  /usrs/bin/python
# _*_ coding:utf-8 _*_ 1.末尾追加元素操作:
list.append(elem) # 追加elem元素
list.extend(seq) # 追加seq序列中所有元素
2.计数操作:list.count(elem) # 统计elem元素在列表中出现频数
3.寻址操作:list.index(elem) # 从列表中找出某个值第一个匹配项的索引位置
4.插入操作:list.insert(index, elem) # 将elem插入列表index位置处
5.按索引移除操作:
list.pop() # 移除列表中最后一个元素,并且返回该元素的值
list.pop(index) # 移除列表中位置index处的元素,并且返回该元素的值
6.按内容移除操作:list.remove(elem) # 移除列表中某个值的第一个匹配项
7.反转操作:list.reverse() # 反向列表中元素
8.排序操作:list.sort() # 对原列表进行排序(默认自然排序或字典序排序)
list.sort(key = len) # 原列表按照
list.sort(reverse = True) # 对原列表逆序排序,即反转列表元素

list function

   d) 列表的删除

     列表是可变序列。因此列表的删除可以单独删除列表元素。     

 #!  /usrs/bin/python
# _*_ coding:utf-8 _*_ li = [0, 2, 4, 6, 8]
del li[1]
print li 结果是:[0, 4, 6, 8]

delete list elements

     当然也可以像元组一样删除所有的列表元素,效果同元组类似。

   e) 列表的拷贝  与元组类似,不再赘述

  3.集合类型(Collection Types)-----元素无序,可不可重复看具体集合类型

   3.1) set 自有集

   可重复集合

   3.2) frozenset 冻结集

   不可重复集合

  4.映射类型(Map Type)-----元素无序,key值不可重复,value值可重复

  

  

  

  

  

  

  

  

  

max(tuple)

元组是值的序列,每个值都可以被单独访问。Python语言没有内置的数组类型(Array Type),但是我们可以通过Tuple来实现类似Java中Array的功能。而且元组的元素可以为任何Python合法数据,类似于Java的泛型机制。下面总结一下元组的特征:

Beginning Python Chapter 3 Notes的更多相关文章

  1. Beginning Python Chapter 1 Notes

    James Payne(American)编写的<Beginning Python>中文译作<Python入门经典>,堪称是Python的经典著作. 当然安装Python是很简 ...

  2. Beginning Python Chapter 2 Notes

    Python基本数据类型用Python官方说法应该叫Python内建数据类型,英文叫built-in type.下面稍微总结了一下我看到过的Python内建数据类型. Python基本数据类型 数据类 ...

  3. <Web Scraping with Python>:Chapter 1 & 2

    <Web Scraping with Python> Chapter 1 & 2: Your First Web Scraper & Advanced HTML Parsi ...

  4. Think Python - Chapter 18 - Inheritance

    In this chapter I present classes to represent playing cards, decks of cards, and poker hands.If you ...

  5. Think Python - Chapter 17 - Classes and methods

    17.1 Object-oriented featuresPython is an object-oriented programming language, which means that it ...

  6. Think Python - Chapter 16 - Classes and functions

    16.1 TimeAs another example of a user-defined type, we’ll define a class called Time that records th ...

  7. Think Python - Chapter 12 Tuples

    12.1 Tuples are immutable(元组是不可变的)A tuple is a sequence of values. The values can be any type, and t ...

  8. Think Python - Chapter 11 - Dictionaries

    Dictionaries A dictionary is like a list, but more general. In a list, the indices have to be intege ...

  9. Think Python - Chapter 10 - Lists

    10.1 A list is a sequenceLike a string, a list is a sequence of values. In a string, the values are ...

随机推荐

  1. shuts down an ExecutorService

    shuts down an ExecutorService in two phases, first by calling shutdown to reject incoming tasks, and ...

  2. mvc 自定义 AuthorizeAttribute 验证逻辑

    public class AuthorizationFilterAttribute : AuthorizeAttribute { Dictionary<string, string> ro ...

  3. C# DataGridView的單元格中只能輸入數字

    控件類型:DataGridView 控件名稱:dgvGift_Condition 裏面用到的:IsNumeric.NotePastText.RestoreText 等請參見 前一日志“TextBox中 ...

  4. C#父窗体右击事件实现

    之前在博问上提问过,没人回答啊,豆太少没人权? 没注册钩子的话根本没办法弹出右键菜单啊,因为在父窗体内有一个容器,所以鼠标在右击时是无法触发窗体的mousedown事件的,即使把KeyPreview设 ...

  5. 如何编写新的PCL类

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=244 把代码转换成符合PCL思路和句法的代码,对于第一次接触该基础架构的人会 ...

  6. Java&nbsp;keytool命令说明

    Java keytool命令说明 Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中 ...

  7. 关于 == 和 equals() 的区别

    对于正在学习java的,以及入行不久的小伙伴们,在面试中经常会被面试官问到 "  == 和 equals() 的区别 ?"的问题,你是否回答好了呢? 示例一: //两个基本类型数据 ...

  8. Working Experience - How to handle the destroyed event of UserControl

    正文 问题: UserControl 如何在父窗体(程序)关闭时, 释放一些需要手动释放的资源 方法: 使用 Control.FindForm() 获取父窗体, 从而得到父窗体的 Closing/Cl ...

  9. 通过ssh X11转发使用远程gui程序

    ssh协议可以转发X11数据, 从而达到使用远程gui程序的功能, 假定现在有 客服端 C :192.168.0.13 服务器 S :192.168.0.200 首先确保在客服端C 上能够通过 ssh ...

  10. \n和\r\n的区别

    \r是回车符,\n是换行符计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好 ...