Python 数据类型及其用法:
本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁。

基本结构
我们首先要看的是几乎任何语言都具有的数据类型,包括字符串、整型、浮点型以及布尔类型。这些基本数据类型组成了基本控制块,从而创建我们的Python应用程序。

字符串
字符串(String) 是一段文本字符,通常以某种形式向用户输出。如果我们打开Python的解释器,我们试着最常见的输出“Hello World!”应用:

>>> print ("Hello, world!")
Hello, world!
Python 中的数据类型不需要像Java或C语言那样显示的定义,这就意味着在Python中字符串就是简单地用引号括起来来标识,向上面的“Hello, world!”那样。我们也可以使用单引号而不是双引号,当我们字符串中就有双引号时,使用单引号来表示整个字符串更加方便,如:

>>> print ("This is David's program")
This is David's program

>>> print ('"Hello", said David')
"Hello", said David
从上面你就可以看出在不同的条件下如何交叉使用不同的引号。

字符串提供了许多内置的函数,这些在很多Python程序中很有用处,它们包括:

endswith() - 检查字符串是否以给定字符串结尾
startswith() - 检查字符串是否以给定字符串开始
upper() - 将字符串所有字符变成大写
lower() - 将字符串所有字符变成小写
isupper()/islower() - 检测字符串是否全是大写/小写
我们也可以将字符串作为一个参数传入函数len()来返回字符串的长度,例如 len(“david”)
Python中字符串也是可迭代的,迭代的概念待会在列表和字典数据类型中可以做更深入的了解。这意味着我们可以依次循环字符串中每个字符,这在其它语言一般是不行的。

另一个关于字符串的技巧是,我们可以对字符串进行格式化。最好的方法是用 format语句来完成,这个函数为你处理你传入对象的类型以字符串形式显示,所以你可以传入任何类型的对象到 format 方法用来输出。如下:

>>> string_1 = "Hello, {}, here is your string".format("David")
'Hello, David, here is your string'
>>>
>>> string_2 = "Hello, {}, your are {} years old".format("David", 23)
'Hello, David, you are 23 years old'
>>>
>>> string_3 = "Hello, {}, your are {} years old".format("David", 23.5)
'Hello, David, you are 23.5 years old'
从上面的代码可以清晰地看出,format 方法可以用来将任意的 Python 数据类型替换成字符串。

布尔类型以及if语句
布尔值 (True or False) 在任何语言中都是至关重要的,它们可以使我们根据变量的真假值来做出判断,通过代码可以用来控制程序的路径。在 Python 中,布尔值的首字母是大写的:True 和 False。举例来说,使用上面提到的字符串的一些方法,我们可以测试一个字符串是否是大写,并输出正确的结果:

>>> if "david".isupper():
print ('"david" is uppercase')
else:
print ('"david" is lowercase')

"david" is lowercase
Python 中if 语句用来检查第一个条件是否为真,如果为True就会打印出 “david” is uppercase。然而在这个例子中,它返回False,所以 else 块执行,打印出 “david” is lowercase 。

在Python中,数据有其隐式的真假值的,这对于使代码简短、准确非常有帮助,就不需要每个地方都做判断了。下面就是Python中使用隐式布尔值的例子:

>>> bool('')
False
>>> bool('hello')
True
>>> a = None
>>> b = 1
>>> bool(a)
False
>>> bool(b)
True
>>> if a:
print ("Yes")

>>> if b:
print ("Yes")
Yes
在这个例子中,你可以看到我们可以检查变量的真假值。通过调用bool方法,传入我们的变量给其做参数,返回True 或者 False。空值或者None(Python中类似其它语言Null 或者 Nil 的值)都会被认为是 False ,而其它情形则被认为是 True。

整型、浮点型、复数
数值(Numbers) 在Python中就像通常格式所代表的那样,整型如1,10,56,1045,100433 等等。

浮点型,通常我们需要小数时使用,例如1.23、0.34532、23.4667 等等。

Python 支持简单和高级的数学计算,有着广泛的用途,最常用的还是基本的算术运算:

>>> 1 + 1
2
>>> 1 - 1
0
>>> 2 * 2
4
>>> 2 / 2
1
查看 Python Docs,复数类型解释如下:

Complex numbers are also supported; imaginary numbers are written with a suffix of j or J. Complex numbers with a nonzero real component are written as (real+imagj), or can be created with the complex(real, imag) function.
>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)
Complex numbers are always represented as two floating point numbers, the real and imaginary part. To extract these parts from a complex number z, use z.real and z.imag.
>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
更多高级结构
列表以及for循环
列表(list) 是Python以及其它语言中最常用到的数据结构之一。Python 使用中括号()用来解析列表,允许你以任意的顺序存储数据,从而方便处理。举例来说,如果我们需要从一个对象中抽取一些数据,我们可以将这些数据存在列表中以备后面使用:

>>> my_list = []
>>> for object in objects:
my_list.append(object.name)
>>> print (my_list)
['name_1', 'name_2', 'name_3']
上面的例子并不好,但你可以看到我们是如果从对象中提取数据,并将它们放到我们的列表中。类似的,如果我们有两个列表,使用extend方法我们可以将它们合并成一个:

>>> list_1 = [1,2,3]
>>> list_2 = [4,5,6]
>>> print (list_1.append(list_2))
[1,2,3,[4,5,6]]
>>> print (list_1.extend(list_2))
[1,2,3,4,5,6]
这能清楚地看出这两个重要方法的不同。

在我们的第一个例子中,使用到了for循环来从我们的数据中构成列表,一种更简洁的解决方法可以使用列表扩展,这可以将整个过程压缩成一行。这是Python提供的一种高效的解决方法:

>>> my_list = [object.name for object in objects]
>>> print my_list
['name_1', 'name_2', 'name_3']
再来看看这是如何映射到第一中方法的:在列表中,我们遍历objects,使用object作为从objects取出每个元素的变量名,最后我们取出object的name构成我们的列表。

除了使用方括号用来构造列表对象之外,我们还可以使用列表构造函数list()来建立我们的列表,如下:

>>> list('a')
['a']
>>> values = (1,2,3,4) # tuple object see below
>>> list(values)
[1,2,3,4]
字典
另一个普遍使用的Python数据结构是字典(Dictionaries)。字典用来存储大量数据,并且提供快速处理的方法。一种常见的字典应用的例子是通讯录系统。在字典这种数据结构中,你需要一个唯一的‘key’用来查询它对应的‘value’。在通讯录中,那个唯一的‘key’可以是电话号码,因此,字典结构是这样的:

>>> phonebook = {'012345678': 'A Person',
'987654321': 'A.N Other'}
这儿我们有一个字典,电话号码作为‘key’,对应人名作为‘value’。现在我们可以使用这个结构来查询,如下:

>>> phonebook['012345678']
'A Person'
Python的字典同样提供迭代每个数的标准方法,它们是:iteritems、iterkeys以及itervalues。这些函数分别允许我们迭代keys和values,仅迭代keys以及仅迭代values。下面是例子:

迭代所有的项:

>>> for key, value in phonebook.iteritems():
print (key, value)
987654321 A.N Other
012345678 A Person
仅迭代所有的keys:

>>> for key in phonebook.iterkeys():
print (key)
987654321
012345678
仅迭代所有的values:

>>> for value in phonebook.itervalues():
print (value)
A.N Other
A Person
与列表一样,也有不止一种创建字典的方法。到目前为止,我们只使用了逐个列举并用花括号括起来的方法来创建字典。然而,我们还可以像下面这样使用字典构造函数创建,需要传入关键字参数来创建我们字典的键值对:

>>> dict(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
Sets 和 Frozensets
类似与列表,我们还有集合(Sets) 以及 Frozensets 的数据结构。集合允许我们像列表那样存储数据,但不同的是集合里不允许有重复元素。当我们想确保每个数据只有一份拷贝的时候,这个是非常棒的。Frozensets 几乎和普通的集合是一样的,但它是不可变的类型(immutable),这意味着一旦它被创建,它就不能再以任何方式改变。

同样,我们创建集合的方法有列举法(注意:相同的元素会自动删除):

>>> a = {1,2,3,3}
set([1, 2, 3])
也可以使用构造函数:

>>> set([1,2,3,3])
set([1, 2, 3])
Python 提供了强大的集合操作方法,我们可以完成数学中集合的并集、交集、差集等操作,如下:

>>> a = {1,2,3}
>>> b = {3,4,5}
>>> a.union(b)
set([1, 2, 3, 4, 5])
>>>
>>> a.difference(b)
set([1, 2])
>>>
>>> a.intersection(b)
set([3])
元组
最后介绍的 Python 数据类型是元组(tuples)。元组类似与列表,用逗号(,)来分隔存储的数据,与列表不同的是元组是不可变类型(immutable),列表可以任你插入或改变,而元组不行。所以,元组适用于你的数据是固定且不需改变的情形。从内存的角度来看,使用元组有一大好处是,Python可以明确地知道需要分配多少内存给元组(同样 Frozensets 也有这个好处)。

Python 同样也提供列举法和构造法来创建一个元组:

>>> my_tuple = (1,2,3,4)
(1,2,3,4)
>>>
>>> a = tuple([1,2,3,4])
>>> type(a)

day01-day04总结- Python 数据类型及其用法的更多相关文章

  1. Python 数据类型及其用法

    本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组 ...

  2. Python数据类型的用法

    字符串的用法 res = 'hellow,world' print(res) #res.显示的都是它的方法,下划线的除外 1 判断字符串的结尾字符,返回的值的布尔形式 endswith 判断字符串的开 ...

  3. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  4. Python学习笔记(五)--Python数据类型-数字及字符串

    Python数据类型:123和'123'一样吗?>>> 123=='123'False>>> type(123)<type 'int'>>> ...

  5. python数据类型分类以及运算类型

    一.python数据类型 目录: 1.数字(整数.小数) 2.字符串(单引号.双引号.三引号) 3.元组 #元素确定之后不能修改 4.列表 #元素可以修改 5.集合  #不讲顺序,得到的结果没有重复元 ...

  6. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  7. 【转】Python数据类型之“集合(Sets)与映射(Mapping)”

    [转]Python数据类型之“集合(Sets)与映射(Mapping)” 一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的 ...

  8. python map 常见用法

    python map 常见用法2017年02月01日 19:32:41 淇怪君 阅读数:548版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/art ...

  9. python之函数用法isinstance()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isinstance() #isinstance() #说明:返回一个布尔值,判断数据 ...

随机推荐

  1. 消息队列msmq

    http://q.cnblogs.com/q/26895/ 远程队列必须现在运程服务器上创建. 在 Windows Server 2008 上安装 IIS 服务和 MSMQ 功能后,系统会在 IIS  ...

  2. The Model Complexity Myth

    The Model Complexity Myth (or, Yes You Can Fit Models With More Parameters Than Data Points) An oft- ...

  3. 【技术贴】解决127.0.0.1和http://localhost均被拦截跳转到另一个网页

    很艰难的历程. 今天安装一个OA系统,要用到http://127.0.0.1输入完成之后,可以进入安装界面,but,我输入完了之后,自动跳到了129129垃圾网站,艹,我真TM服了,我把本地连接网线都 ...

  4. 百度统计js被劫持用来DDOS Github

    今天中午刷着全国最大的信息安全从业人员同性交友社区zone.wooyun.org的时候,忽然浏览器每隔2秒就不断的弹窗: malicious javascript detected on this d ...

  5. iOS-NSTimer-pause-暂停-引用循环

    7月26日更新: 今天更新的主要目的是因为暂停!!!! 注:不推荐使用,并不是这样有错,而是因为这样写代码的规范问题,代码要有可读性,遵循代码即文档,使用暂停在团队合作中可能会带来误会,非必要不建议使 ...

  6. Jvm工作原理学习笔记(转)

    一.         JVM的生命周期 1.       JVM实例对应了一个独立运行的java程序它是进程级别 a)     启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有pub ...

  7. lc面试准备:Reverse Linked List II

    1 题目 Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1 ...

  8. 【POJ】2001 Shortest Prefixes

    字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 26 typed ...

  9. 如何将Java源代码文件的编码从GBK转为UTF-8?

    有时候看到有意思的demo,在头痛导入项目的编码和workspace的编码不一样的时候 我试着将 笔记本打开一个类一个类的复制, demo的类比较少的时候 可以忍受,demo的类多的时候 除了靠之外 ...

  10. Linux学习笔记21——线程同步的两种方式

    一  用信号量同步 1 信号量函数的名字都以sem_开头,线程中使用的基本信号量函数有4个 2 创建信号量 #include<semaphore.h> int sem_init(sem_t ...