变量(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. windows平台下新网络库RIO ( Winsock high-speed networking Registered I/O)

    What's New for Windows Sockets Microsoft Windows 8 and Windows Server 2012 introduce new Windows Soc ...

  2. git base cli

  3. mysql的SQL_CALC_FOUND_ROWS /FOUND_ROWS()

    在很多分页的程序中都这样写: SELECT COUNT(*) from `table` WHERE ......;  查出符合条件的记录总数 SELECT * FROM `table` WHERE . ...

  4. Java虚拟机学习 - 体系结构 内存模型(转载)

    一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” .“非堆”,  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB, ...

  5. VMware10中安装centos7没有可用的网络设备

    1.问题描述 centos7安装到虚拟机无法上网   2.安装环境 win7 x64  WM 10.01 iso  CentOS-7-x86_64-DVD-1503-01.iso  {4.01G}   ...

  6. QTreeWidget笔记

    1.QTreeWidget继承自QTreeView. 2.头文件:QTreeWidget 3.简单使用: #include "mainwindow.h" #include < ...

  7. 用VisualSVN Server创建版本库,以及TortoiseSVN的使用

    介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化. SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. ...

  8. 用js判断屏幕的宽度,改变html字体大小用rem布局

    if (document.documentElement.clientWidth > 600) {//页面宽度大于600px让其宽度等于600px,字体大小等于60px,居中 document. ...

  9. ue4 tags 与 cast

    父类设置tags,子类默认自动添加这个tags 子类可以强行删除父类的tags,这时如果把子类cast为父类,一样找不到这个tags 综上,要找到一个actor的tags,那么这个actor上就一定要 ...

  10. AGC001 C - Shorten Diameter【枚举】

    一开始没看到要保证最后是树--所以一定要从叶子开始删 枚举重心,如果k是偶数,那么按当前重心提起来deep大于k/2的全都要切掉,这样枚举重心然后取min即可 奇数的话就是枚举直径中间的边,然后从两边 ...