python学习之核心数据类型
python核心数据类型
对象类型 例子
数字 1234,-345
字符串 'spam'
列表 [1,3,'ds']
元组 (1,'spam',6)
字典 {'name':'lili','age':12}
文件 myfile =open('test.text',''w)
集合 set('abc')
其他类型 None 布尔型
编程单元类型 函数,模块,类
数字
加,减,乘,除,就不用说了,+ - * /
** 表示乘方 2**3 表示 2的三次方 结果是8
>>>2**100
1267650600228229401496703205376L
会发现,即使是一个很大的数,python也可以正确输出,可能结果是用字符串保存的,
除了表达式外,和python 一起分发的还有一些常用的数学模块,模块只不过是我们导入以供使用的额外工具包
import math
>>>math.pi
import random
>>>random.random();
字符串
在python中我们还可以反向索引,从最后一个开始
s = "dhsaj"
>>>s[-1]
j
>>>s[-2]
a
除了简单的位置索引外,序列也支持一种所谓的分片操作这是一种一步就能够实现整个分片的方法
s = "spam"
>>>s[1:3]
pa
>>>s[1:] 从序号1开始之后的所有序列
pam
>>>s
spam
>>>s[0:3]
spa
>>>s[:3] 从头开始到序号为3的之前的序列
spa
>>>s[:-1] 从头开始到最后一个之前的序列
spa
>>>s[:] 从头开始到最后的序列
spam
字符串也支持用加好进行合并
s = "spam"+"name"
>>>s
spamname
>>>s*2 重复两次
spamnamespamname
不可变性
python字符串在创建之后就不能改变
s = "spam"
>>>s[0] = 'z'
出错
s = 'z'+s[1:];
>>>s
zpam
类型特定的方法
find 可以进行字符串的查找
replace 将会对全局进行搜索和替换
s = "spam"
>>>s.find("pa");
1
>>>s.replace("pa","xyz");
sxyzpam
>>>s
spam
尽管这些字符串方法的命名由改变的含义,但是在这里我们都不会改变原始的字符串,而是会创建一个新的字符串作为结果,因为字符串具有不可变性
line = "aaa,bbb,ccc,ddd";
>>>line.split(','); 将字符串拆分城一个字符串列表
['aaa','bbb','ccc','ddd']
s = 'spam'
>>>s.upper() 改变大小写
SPAM
>>>s.isalpha() 测试字符串内容
True
line = 'aaa,bbb,ccc\n';
>>>line = line.rstrip() 从右边移除空格字符
>>>line
'aaa,bbb,ccc'
字符串还支持一个叫做格式化的高级替代操作,
>>> '%s,eggs,and %s' %('spam','SPAM')
'spam,eggs,and,SPAM'
>>>'{0},eggs,and{1}'.format('spam','SPAM')
'spam,eggs,and,SPAM'
寻求帮助
上一节的方法具有代表性,但是仅仅是少数的字符串的例子而已,可以调用内置的dir函数,将会返回一个列表,其中包括了对象的所有属性,
>>>dir(s)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
dir函数只是简单的给出了方法的名称,要查询他们是做什么的,可以传递参数给help函数
>>>help('sss'.replace)
Help on built-in function replace:
replace(...)
S.replace(old, new[, count]) -> string
Return a copy of string S with all occurrences of substring
old replaced by new. If the optional argument count is
given, only the first count occurrences are replaced.
列表
python列表不像c语言那种需要统一的类型,python列表可以存放不同的类型
因为列表是可变的,大多数列表的方法,都会原地的改变列表对象,而不是创建一个新的列表
l = [12,"das",34];
>>>len(l)
3
>>>l[0]
12
>>>l[:-1]
12,"das"
>>>l+[4,5,6]
[12,"das",34,4,5,6]
>>>l.append('aa');
[12,"das",34,'aa']
>>>l.pop(2)
[12,'das',aa]
>>>l.sort() 排序
>>>l.reverse(); 翻转
列表虽然是没有固定的大小,但是仍然使不能访问超出表尾的数据
------------------------------------------------------------
嵌套
python 可以支持任意的嵌套形式
就是在一个列表中可以嵌套另一个列表甚至是一个元祖
---------------------------------------------------------------
列表解析
m=[ [1,2,3],
[4,5,6],
[7,8,9]
];
>>>cols = [row[1] for row in m]; // 从m中取出第二列 row 对应m中每个列表元素
>>>cols
[2,5,8]
>>> cols = [row[1] for row in m if row[1]%2 == 0] 也支持判断语句
[2,8]
>>> double = [c*2 for c in "spam"];
>>>double
['ss','pp','aa','mm'];
字典
字典不是序列,而是一种映射,是通过键而不是相对位置来存储的,只是简单的将键映射到值
>>>d = {'food':'spam','color':4}
>>>d['food']
'spam'
>>>d = {'name':{'last':smith,'first':'bob'},
'age':23,
'job':'aa'}
>>>d['name']
{'last':smith,'first':'bob'},
>>>d['name']['first']
'bob'
>>>d = {'a':1,'c':2,'b':3}
>>> li = list(d.keys())
>>>li
['a','c','b']
>>> li.sort();
>>> li
['a','b','c'];
元组
基本上就是一个不可改变的列表
>>> t = (1,2,3,4)
>>>len(t)
4
>>>t + (5,6);
(1,2,3,4,5,6)
在3.0中由两个专有的方法
t.index(4)
3
t.count(3)
1
同样支持混合的类型和嵌套,但是不能增长或是缩短,
文件
创建一个文件对象,需要调用内置的函数,和一个操作模式,
>>>f = open ('file1.txt','w')
>>>f.wirte('hello\n')
>>>f.write('world\n')
>>>f.close();
>>>f = open('file1.txt','r') r rb
>>>str = f.read()
>>>f.close()
>>>str
>>
----------------------------------
>>> l = [1,2,3,4]
>>>type(l)
<type list>
>>> type(type(l))
<type type>
以下三种都是用来判断类型的
if(type(l) == type([])){
}
if(type(l) == list){
}
if(isinstance(l,list)){
}
----------------------------------------------------------------------------
用户自定义的类
class student:
def __init__(self,name):
self.name = name;
def getName(self):
return self.name;
def setName(self,name):
self.name = name;
stu1 = student('lil');
name = stu1.getName();
print(name);
stu1.setName('aaa');
name = stu1.getName();
print(name);
python学习之核心数据类型的更多相关文章
- Python学习笔记 - day3 - 数据类型及运算符
Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- 记录我的 python 学习历程-Day03 数据类型 str切片 for循环
一.啥是数据类型 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字,否则它是分 ...
- python学习第九天数据类型列表创建,查找操作方法
数据类型中列表是整个python最常用的数据类型,列表最常用的方法就是创建,增删改查,切片,循环以及排序等系列操作,任何操作都离不开增删改查操作,这样很容记住操作方法 1,列表的创建 list=[] ...
- python学习(二)python中的核心数据类型
数据类型是编程语言中的很重要的一个组成部分,我所知道的有数据类型的好处有:在内存中存放的格式知道,规定了有哪几种可用的操作. 我的埋点:为什么要有数据类型 那么python中的数据类型有哪几种呢? 对 ...
- Python学习手册之数据类型
在上一篇文章中,我们介绍了 Python 的异常和文件,现在我们介绍 Python 中的数据类型. 查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/99799 ...
- Python学习-字符编码, 数据类型
本篇主要内容: 字符编码 Python中的数据类型有哪些 类型的一些常用操作及方法 一.字符编码 编码解释的大部分内容摘自廖雪峰老师教程中的讲解,点击跳转. 简单介绍: 我们知道计算机只能处理数字,如 ...
- python学习道路(day2note)(数据类型,运算符,字符串,列表)
一,数据类型 1.1数字 数字分为int(整型),long(长整型),float(浮点型) 1.1.1 int整型的取值范围为 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31- ...
- python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上 ...
- python学习03-数据类型
一.基本数据类型--数字 布尔型 bool型只有两个值:True和False 之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False. 以下是布尔值是False的各种情况: ...
随机推荐
- js实现类似iphone的秒表-添加平均数功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)
前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ssh项目分割为不同的几个部分独立开发,很重要,加油 --WH 一.maven父工程与子模块的拆 ...
- JQuery获取Dom元素的方法
(function (window) { var arr = []; var VP = function (selector, context) { return new VP.fn.init(sel ...
- 进击的AssetBundles和它的工具们
0x00 前言 周末的时候在家看了下去年的Unite16 LA的视频.其中一个session很有趣,是AssetBundles开发团队Reichert的一个"总结过往,畅想未来"的 ...
- Java自学手记——泛型
泛型在集合中的应用 泛型在集合经常能看到,有两个好处:1.把运行时出现 的问题提前至了编译时:2.避免了无谓的强制类型转换. 用法:两边泛型的类型必须相同,可允许一边不写,只是为了兼容性,并不推荐. ...
- 使用ajax提交form表单(转)
前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的aja ...
- HTTP消息中Header头部信息整理
1.HTTP请求方式 GET 向Web服务器请求一个文件 POST 向Web服务器发送数据让Web服务器进行处理 PUT 向Web服务器发送数据并存储在Web服务器内部 HEAD 检查一个对象是否存在 ...
- Java - extends
继承 一个类得到了另一个类当中的成员变量和成员函数. Java只支持单继承,一个父类可以有多个子类. 使用继承,可减少重复代码.把重复代码放入父类中.需要添加共同的成员变量或函数时可以直接操作父类. ...
- RxSwift 系列(六) -- Mathematical and Aggregate Operators
前言 本篇文章将要学习RxSwift中数学和集合操作符,在RxSwift中包括了: toArray reduce concat toArray 将一个Observable序列转化为一个数组,并转换为一 ...
- NLP —— 图模型(零):EM算法简述及简单示例(三硬币模型)
最近接触了pLSA模型,该模型需要使用期望最大化(Expectation Maximization)算法求解. 本文简述了以下内容: 为什么需要EM算法 EM算法的推导与流程 EM算法的收敛性定理 使 ...