十分钟学会Python的基本类型

一:起因

(1)说起学习Python的原因,上一篇blog已经提到过了;Python掐指一算不过是自己接触过的第四门大型语言(从接触到现在已经2周了)c/c++ ,Java,MATLAB(PS:应该还不算入门,只会简单的应用),之后就是python了。

(2)c/c++ 到java的过渡是非常短暂的,但是过渡到MATLA就非常的不顺利(PS:就是上一篇的blog提到过的,从内心里抵触一门未曾谋面的语言),当时就已经感受到了开启一门新语言阻力非常大(有时可以用可遇不可求来形容)。

(3)从java到python中间,大概有两三年的时间没有学习新的语言,一直再巩固数据结构 和 算法的基础东西,和C++的STL,以及JavaWeb编程等等,总之是没有接触过新的语言,可想而知接受新事物阻力有多大(ps:自己的思想得有多么落伍);当然,也正是由于长时间突然接触一门新语言,对于如何快速掌握一门语言,自己也有自己的一点感触。

(4)思想和观念的转变 —— 感触分享

 乐于善于接受新鲜事物,对新知识充满渴求的欲望;

多交朋友,你可能会做到一门技术一门语言的大牛,你不可能门门精通,互相学习;

参见技术交流群 和 技术blog和社区,之后自己再钻研官方的API

开启一门新技术的策略:1)从一个感兴趣的点入手(培养兴趣),运行一些小示例;2)1-2天简单的过一下基本的语言(可以不变代码);3)1-2天开始把教程里面的一些小程序,自己手动敲一遍;4)2-3天把此语言的数据类型以及包装类型的(类似STL)的方法应用一下,调试一下;5)高级进阶以及高级应用;6)总结,总结贯穿始终。

二:详解

(1)列表(Lists)

1)序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

2)Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
#与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

3)list

1-- 使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:list[1:5],截取;list[[:-1];
2-- 你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
3-- 可以使用 del 语句来删除列表的的元素,如下实例:del list[8:-1];
4-- 列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

5-- cmp(list1, list2) 比较两个列表的元素;  len(list)  列表元素个数; max(list)返回列表元素最大值; min(list)返回列表元素最小值;  list(seq) 将元组转换为列表
6--函数
1-- list.append(obj) 在列表末尾添加新的对象
2 list.count(obj) 统计某个元素在列表中出现的次数
3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)  从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)  将对象插入列表
6 list.pop(obj=list[-1])   移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7 list.remove(obj)   移除列表中某个值的第一个匹配项
8 list.reverse()  反向列表中元素
9 list.sort([func])   对原列表进行排序

(2)元组  方法与list基本相同

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。如下实例:

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

(3)string字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可

1)Python转义字符在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\n 换行

2)Python字符串运算符

+ 字符串连接a + b 输出结果: HelloPython

* 重复输出字符串a*2 输出结果:HelloHello

[] 通过索引获取字符串中字符a[1] 输出结果 e

[ : ] 截取字符串中的一部分a[1:4] 输出结果 ell

in 成员运算符 - 如果字符串中包含给定的字符返回 TrueH in a 输出结果 1
not in 成员运算符 - 如果字符串中不包含给定的字符返回 TrueM not in a 输出结果 1
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。print r'\n' prints \n 和 print R'\n' prints \n
% 格式字符串 请看下一章节

3)三引号

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。

 errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')
4)python的字符串内建函数

字符串方法是从python1.6到2.0慢慢加进来的——它们也被加到了Jython中。
这些方法实现了string模块的大部分方法,如下表所示列出了目前字符串内建支持的方法,所有的方法都包含了对Unicode的支持,有一些甚至是专门用于Unicode的。

方法 描述

string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
string.count(str, beg=0, end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
string.decode(encoding='UTF-8', errors='strict')以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除 非 errors 指 定 的 是 'ignore' 或 者'replace'

string.encode(encoding='UTF-8', errors='strict')以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
string.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在 string中会报一个异常.
string.isspace()如果 string 中只包含空格,则返回 True,否则返回 False.

string.lower()转换 string 中所有大写字符为小写.
string.lstrip()截掉 string 左边的空格
string.partition(str)有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
string.replace(str1, str2,  num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0,end=len(string) )类似于 find()函数,不过是从右边开始查找.
string.rpartition(str)类似于 partition()函数,不过是从右边开始查找.
string.rstrip()删除 string 字符串末尾的空格.
string.split(str="", num=string.count(str))以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
.
string.strip([obj])在 string 上执行 lstrip()和 rstrip()

(4)Python 字典(Dictionary)

字典是另一种可变容器模型,且可存储任意类型对象,如其他容器模型。字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。键必须独一无二,但值则不必。值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
1)删除字典元素  能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:

#coding=utf-8
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 删除键是'Name'的条目
dict.clear();     # 清空词典所有条目
del dict ;        # 删除词典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

2)字典内置函数&方法  Python字典包含了以下内置函数:
序号 函数及描述
1 cmp(dict1, dict2) 比较两个字典元素。
2 len(dict) 计算字典元素个数,即键的总数。
3 str(dict) 输出字典可打印的字符串表示。
4 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。


1 radiansdict.clear() 删除字典内所有元素
2 radiansdict.copy() 返回一个字典的浅复制
3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
5 radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回false
6 radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys() 以列表返回一个字典所有的键
8 radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里

10 radiansdict.values() 以列表返回字典中的所有值

5)Python 日期和时间

Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个time and calendar模组可以帮忙。
Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式。如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操作系统时间, 如下实例:

上述也就是struct_time元组。这种结构具有如下属性:

序号 属性
0 tm_year 2008
1 tm_mon 1 到 12
2 tm_mday 1 到 31
3 tm_hour 0 到 23
4 tm_min 0 到 59
5 tm_sec 0 到 61 (60或61 是闰秒)
6 tm_wday 0到6 (0是周一)
7 tm_yday 1 到 366(儒略历)
8 tm_isdst -1, 0, 1, -1是决定是否为夏令时的旗帜

Time模块

Time模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:
序号 函数及描述
1 time.altzone
返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
2 time.asctime([tupletime])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
3 time.clock( ) 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
4 time.ctime([secs])  作用相当于asctime(localtime(secs)),未给参数相当于asctime()
6 time.localtime([secs]) 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
7 time.mktime(tupletime) 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。
8 time.sleep(secs)  推迟调用线程的运行,secs指秒数。
9 time.strftime(fmt[,tupletime]) 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

10 time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根据fmt的格式把一个时间字符串解析为时间元组。
11 time.time( ) 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
12 time.tzset() 根据环境变量TZ重新初始化时间相关设置。

日历(Calendar)模块 此模块的函数都是日历相关的,例如打印某月的字符月历。

星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数

模块包含了以下内置函数:

序号 函数及描述
1 calendar.calendar(year,w=2,l=1,c=6)返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。
3 calendar.isleap(year) 是闰年返回True,否则为false。
4 calendar.leapdays(y1,y2) 返回在Y1,Y2两年之间的闰年总数。
5 calendar.month(year,month,w=2,l=1)返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
6 calendar.monthcalendar(year,month)返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为;范围内的日子都由该月第几日表示,从1开始。
7 calendar.monthrange(year,month)返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
10 calendar.setfirstweekday(weekday) 设置每周的起始日期码。0(星期一)到6(星期日)。
12 calendar.weekday(year,month,day) 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。

在Python中,其他处理日期和时间的模块还有:datetime模块  pytz模块  dateutil模块

(0)目录

快速学Python 和 易犯错误(文本处理)

Python文本处理和Java/C比对

十分钟学会Python的基本类型

快速学会Python(实战)

大数据处理之道(十分钟学会Python)



你可能感兴趣的:(Python的快速入门,Python的基本类型)