python3.4入门——核心数据类型
变量、对象和引用
变量的创建:一个变量(即变量名,如a),当代码第一次给它赋值就创建了它。
变量类型:变量没有任何和它关联的类型信息约束。类型的概念存在于对象中,而不是变量名中。变量原本是通用的,只是在一个特点的时间点,简单的引用了一个特定的对象。
变量的使用:当变量出现在表达式中,它就会被当前所引用的对象代替。所有变量使用前都应该明确的赋值。
- 变量是一个系统表的元素,指向拥有对象的连接的空间。
- 对象是分配的一块内存,有足够的空间去表示他们代表的值。
- 引用是自动形成的从变量到对象的指针。
核心类型的分类:
不可变类型(数字、字符串、元祖、不可变集合):不支持在原处修改,但可以运行表达式创建新的对象并将其结果分配给变量。
可变类型(列表、字典、可变集合):可通过操作原处修改,而不用创建新的对象。
一、字符串:
一个有序字符的组合,被划分为不可变序列这一类别,意味着字符串包含着字符从左到右的位置顺序,并且他们不可以在原处修改。
‘spam',''spam",'''spam'''......
r'string':表示raw字符串,r(大写或小写)出现在引号前,它将会关闭转义机制。
s1+s2 #合并,重复 s[i] #索引 s[i:j] #分片 len(s)#求长度 s.endswith('sp') #结束测试
s.find('pa') #搜索 s.rstrip() #移除空格 s.split(',') #以逗号为分隔 s.replace('pa','xx') #替换
二、列表
列表的创建:list=[]。列表是任意对象的有序集合,列表的每一项的内容也是有序的,可以执行索引、分片、合并等操作。
>>> l=list('spam') #可迭代项目的列表
>>> l
['s', 'p', 'a', 'm']
>>> l=['abc',['def','ghi']] #嵌套的子列表
>>> l
['abc', ['def', 'ghi']]
>>> l[1][1]
'ghi'
>>> len(l)
2
>>> str([1,2])+"34"
'[1, 2]34'
>>> [1,2]+list('34') # 符号‘+’的合并要求两边都是同等类型的序列
[1, 2, '3', '4']
列表解析 :通过对列表序列中每一项应用一个表达式来构建一个新的列表的循环。
>>> res=[ c*4 for c in 'spam']
>>> res
['ssss', 'pppp', 'aaaa', 'mmmm']
>>> l=['abc','ABD','aBe']
>>> l.sort() #默认是升序排序
>>> l
['ABD', 'aBe', 'abc']
>>> l.append('ABC') #append函数允许传入单一对象而不是列表,与““+””表示的合并不同,append添加对象不产生新的列表。
>>> l
['ABD', 'aBe', 'abc', 'ABC']
>>> sorted(l,key=str.lower,reverse=True) #内置排序函数sorted()排序之后返回新的对象
['aBe', 'ABD', 'abc', 'ABC']
>>> l=[1,2]
>>> l.extend([3,4,5]) #extend在末端插入多个元素
>>> l
[1, 2, 3, 4, 5]
>>> l.pop() #pop()删除末尾的一个元素并取出
5
>>> l
[1, 2, 3, 4]
>>> l.reverse()
>>> l
[4, 3, 2, 1]
>>> l=['spam','eggs','ham']
>>> l.index('eggs') #返回元素的索引位置
1
>>> l.insert(1,'totast') #指定位置插入元素
>>> l
['spam', 'totast', 'eggs', 'ham']
三、字典
列表是有序的对象集合,那么字典是无序的对象的集合。字典的元素是通过键来存取的,而不是通过偏移量存取的。键:值(key,value)
如果说列表是支持位置读取的对象引用数组,那么字典就是支持键读取的无序对象引用表。和列表一样,字典存储的是对象引用。
>>> D={} #空字典
>>> D={'spam':2,'eggs':3}
>>> E={'food':{'ham':2,'egg':3}} #嵌套字典
>>> D['eggs'] #以键进行索引运算
3
>>> E['food']['egg']
3
>>> D.keys() #返回键的视图,而不是列表
dict_keys(['spam', 'eggs'])
>>> D.values() #返回值的视图,而不是列表
dict_values([2, 3])
>>> D.items() #取键+值。。。。。返回对象是的视图,而不是列表
dict_items([('spam', 2), ('eggs', 3)])
>>> D.get(key,default) #取key的值,如果没有key,则赋值default,防止取元素出现错误
>>> D={'eggs':3,'ham':1,'spam':2}
>>> D['ham']=['grill','bake','fry'] #原处修改字典
>>> D
{'spam': 2, 'ham': ['grill', 'bake', 'fry'], 'eggs': 3}
>>> D['brunch']='bacon' #每当对新字典进行赋值,就会在字典内生成一个新的元素
>>> D
{'spam': 2, 'ham': ['grill', 'bake', 'fry'], 'brunch': 'bacon', 'eggs': 3}
字典适用于稀疏矩阵数据结构:使用键对值表示数值非零数值的位置和值。
字典解析:zip函数总是能从单个调用中从键和值的列表来构建一个对应的字典。
>>> list(zip(['a','b'],[1,2]))
[('a', 1), ('b', 2)]
>>> D=dict(zip(['a','b'],[1,2]))
>>> D
{'b': 2, 'a': 1}
>>> D={x:x**2 for x in [1,2]}
>>> D
{1: 1, 2: 4}
>>> D=dict.fromkeys(['a','b','c'],0) #fromkeys函数可对相同值的键统一赋值
>>> D
{'b': 0, 'c': 0, 'a': 0}
字典视图:python3.0中 字典的keys,values,items都返回视图对象,而python2.6返回的是列表。
视图对象是可迭代的,即对象每次产生一个结果集,不是在内存中立即产生结果列表。
字典视图保持了字典最初的顺序,可以反映后来的修改,并支持集合操作。打印不显示自己的项。
字典排序:由于keys()不返回列表,要么手动转化为为列表,要么在键的视图或字典上应用sorted()函数,sorted函数可接受任何视图。
>>> ks=list(ks)
>>> ks.sort()
>>> for k in ks:print(k,D[k])
a 1
b 2
c 3
>>> D={'a':1,'b':2,'c':3}
>>> ks=D.keys()
>>> for k in sorted(ks):print(k,D[k]) #pyhton的迭代结结构会迫使每次可迭代的对象产生一个结果
a 1
b 2
c 3
四、元组
元组是任意对象的有序集合,类似于字符串,不支持在列表中任何原处进行修改。
元组与列表的区别在于,元组的不可变性提供了某种完整性,这样不会被某个引用修改。
>>> T=() #空元组
>>> (1,2)+(3,4) #元组的合并
(1, 2, 3, 4)
>>> T=(1,2,3,4)
>>> T[0],T[1:3] #元组的索引,切片
(1, (2, 3))
因为圆括号也可以把表达式括起来,如果圆括号里的单一对象是元组对象而不是简单的表达式,只需要在这个元组对象后面加一个逗号就可以。
>>> x=(40)
>>> x
40
>>> y=(40,)
>>> y
(40,)
列表解析也可用于元组的转换。
>>> T=(1,2,3,4,5)
>>> l=[x+20 for x in T] #列表解析总会产生新的列表,但也可遍历任何对象。
>>> l
[21, 22, 23, 24, 25]
>>> l.index(22) #返回元素的索引
1
>>> l.count(22) #统计元素的个数
1
元组的不可变性只适用于元组本身而非其内容,比如内容可以像往常一样修改。
>>> T=(1,[2,3],4)
>>> T[1]='spam'
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
T[1]='spam'
TypeError: 'tuple' object does not support item assignment
>>> T[1][0]='spam'
>>> T
(1, ['spam', 3], 4)
五、文件
1、文件对象是python对电脑上外部文件的主要接口。需要创建一个文件对象,通过内置的open函数以一个字符串形式传递给它一个外部的文件名和一个模式处理的字符串。
>>> f=open('C:/Users/dingjing/Desktop/d.txt','w') # ‘w’表示输出生成并打开文件,‘r’(一般为默认情况)表示输入打开文件,‘a’表示在文件末尾追加内容而打开文件。
>>> f.write('hello text file\n')
16
>>> f.write('goodbye text file\n')
18
>>> f.close()
>>> f=open('C:/Users/dingjing/Desktop/d.txt')
>>> f.readline() #每次读取一行,包括行结束符,以字符串形式返回一行
'hello text file\n'
>>> f.readlines() #一次读取整个文件,每一行为一个字符串,返回形式为包含多个字符串的列表
['goodbye text file\n']
而f.read()函数则是一次把整个文件读进一个字符串
在任何情况下,python的文本文件都采用字符串的形式,读取文件时返回的是字符串形式的文件。
>>> for line in f:
print(line,end=' ')
hello text file
goodbye text file #这种迭代方式比较普遍,对内存也比较好使
文本与二进制文件:由open的第二个参数决定,当模式字符串包含'b'表示二进制文件。
可以用pickle模块存储python原生态对象。
六、集合
1.集合不是序列也不是映射,是唯一的不可变的对象的无序集合。集合支持一般的数学集合操作。
2.集合的创建
>>> x=set('spam')
>>> y={'h','a','m'}
>>> x,y ({'a','p','s','m'},{'a','h','m'})
3.集合作为可迭代的容器,支持len,for等循环,因为其无序的,所以不支持索引和切片。
>>> x=set('spam')
>>> x.add('on')
>>> x
{'on', 'm', 'p', 'a', 's'}
>>> for i in x:
print(i*3)
ononon
mmm
ppp
aaa
sss
4.集合包含不可变的对象类型,所以列表和字典不可嵌入集合中。
5.集合解析:编写在{}中作用于集合而不是列表。
>>> {x**2 for x in [1,2,3,4]}
{16, 1, 9, 4}
七、类型检验
在Python中可以使用type()与isinstance()这两个函数判断对象类型,而isinstance()函数的使用上比type更加方便。
1.isinstance()
print isinstance(a,(int,str))
print isinstance(a,(float,str))
print isinstance(b,(str,int))
class c:
pass
obj = c()
print isinstance(obj,(c,int))
执行结果:
False
False
True
2、isinstance 和 type的区别
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
区别就是 对于subclass之类的 type就不行了。
python3.4入门——核心数据类型的更多相关文章
- Python学习手册(1入门知识-数据类型)
UNIX env查找技巧 在一些UNIX系统上,可以用这样一种方法避免硬编码Python解释器的路径,在文件的特定的第一行注释中写上这样一句话. #! usr/bin/env/ python...sc ...
- python基础(一)—— 核心数据类型
Hello World程序 [root@mysql ~]# python3 Python 3.6.5 (default, Jul 8 2018, 11:41:23) [GCC 4.4.7 20120 ...
- python学习之核心数据类型
python核心数据类型 对象类型 例子 数字 1234,-345 字符串 'spam' 列表 [1,3,'ds'] 元组 (1,'spam',6) 字典 {'name':'lili','age':1 ...
- 2. Python3 基础入门
Python3 基础入门 编码 在python3中,默认情况下以UTF-8编码.所有字符串都是 unicode 字符串,当然也可以指定不同编码.体验过2.x版本的编码问题,才知道什么叫难受. # -* ...
- python学习笔记03:python的核心数据类型
从根本上讲,Python是一种面向对象的语言.它的类模块支持多态,操作符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型,OOP十分易于使用.Python的语法简单,容易上手. Py ...
- Python的核心数据类型
Python的核心数据类型有:数字,字符串,列表,字典,元组,文件等. 数字 数字类型有:整形int,浮点型float,复数complex,布尔型bool. 整形 整型数是不带有小数部分的 ...
- Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑
Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑 1.数据类型总结: 可变,不可变,有序,无序 (1)可变的数据类型:list dict set (2)不可变的数据类型: ...
- [python学习手册-笔记]002.python核心数据类型
python核心数据类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...
- Python基础--核心数据类型
python的核心数据类型: Number 数字(整数,浮点数,复数,布尔型数) String 字符串 List 列表 Tuple 元组 Dictionary 字典 Set 集合 1. 整数(整型数) ...
随机推荐
- 参数解析argparse模块
argparse,python的一个命令行解析模块 import argparse #创建一个命令行解析器 parser = argparse.ArgumentParser() #增添参数 parse ...
- 这样就算会了PHP么?-1
公司有用到这些业务,多了解一下总是没错的. 现在开始一系列的PHP学习啦... <?php $boo=true; if($boo==true) echo '变量$boo为真!'; else ec ...
- Window Ghosting(仍可拖动失去响应的窗口,因为我们真正的窗口已经让系统用Ghosting窗口替代了。使用IsHungAppWindow 探测)
最近工作中遇到Window Ghosting这个问题, 感觉挺有意思,这里简单记录下. 在XP时代我们的程序没有响应后只能通过任务管理器强制杀掉,但是Vista之后情况变了, 我们仍然可以拖动 ...
- python ctypes小例子
import time import ctypes import ctypes.wintypes SEE_MASK_NOCLOSEPROCESS = 0x00000040 SEE_MASK_INVOK ...
- python倒计时
#coding=utf-8 #!/usr/bin/env python import datetime,time i=3 while i==3: spring=datetime.datetime(20 ...
- Javascript:字符串分割split()妙用
概述: split() 方法将字符串分割为字符串数组,并返回此数组 语法格式: stringObject.split(separator,limit) 参数说明: 注意:如果把空字符串 (" ...
- 站点建设10个最好的响应的HTML5滑块插件
大多数的最佳响应的HTML5滑块插件能够使用移动应用程序,站点建设项目,以及Web开发项目提供一些令人兴奋的功能,如无限的动画效果,百分之中的一个百响应布局设计和很多其它. 1.别急!慢慢来 功能丰富 ...
- Linux基本操作 1-----命令行BASH的基本操作
1 Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令.操作传递给操作系统底层 shell 分为两种 CUI : Command Line Interface Lin ...
- 多封装,少开放。强烈建议C++标准添加class之间的注入机制
近日在改动了一下下引擎代码(为了自己的组件),发现有些接口是仅仅有特定类及其内部函数才去訪问,却不使用友元声明的形式进行数据訪问--当然使用了普通非virtual的形式也就是意味着不建议重载. 故此: ...
- swift调用相机和相册
简单实现swift调用相机和相册的功能,分享代码与学习swift的童鞋共同进步 import UIKit class ViewController: UIViewController,UIImageP ...