python是动态类型语言,不需要事先声明类型
基本数据类型
1)数字
整数
长整型: 无限大小的数,在其结尾加上大写或小写字母L
浮点数: 小数或用E或e表示的幂
复数: 虚部用大写或小写字母J结尾
2) 字符串
通常用单引号,双引号,三引号包围。其中三引号可以包围的字符串可以跨越多行。
特别注意点:
字符串中的转义字符:
\\ 斜杠
\' 单引号
\" 双引号
\a 系统喇叭
\b 退格符
\n 换行符
\t 横向制表符
\v 纵向制表符
\r 回车符
\f 换页符
\o 八进制数代表的字符
\x 十六进制数代表的字符
\000 终止符,忽略\000后的全部字符
示例:
- # -*- coding: utf-8 -*-
- # python中的string可以用单引号或双引号来定义
- str1 = 'There is a cat on the floor'
- str2 = "The cat wants to catch a mouse"
- # 如果字符串中出现单引号或双引号,需要在引号前面加反斜杠/
- str3 = 'He/'s a teacher'
- # 用ord将字符转化为ASCII码
- print ord('a')
- # 用chr将ASCII码转化为字符
- print chr(ord('a') + 1)
- # 字符串的索引
- print "abcdefgh"[3]
- # 可以用负数索引,相当于倒数第几个字符
- print "abcdefgh"[-2]
- # 使用:得到子字符串
- print "abcdefgh"[1:5]
- # 如果冒号前后不加位置,则到最前或最后
- print "abcdefgh"[:5], "abcdefgh"[5:]
- # 还可以在第三个参数上加上步长
- print "abcdefgh"[0:8:2]
- # 步长还可以是负数,相当于reverse()
- print "abcdefgh"[::-1]
- # 将字符串变为字符list
- x = list("abcdefgh")
- print x
- # 将字符list变为string
- print ''.join(x)
- # 将数字变成字符串的三种方法
- x = 12345
- print 'number:' + str(x)
- print 'number:' + repr(x)
- print 'number:' + `x`
- # 将字符串变成数字
- print eval('2.99') + 0.01
- # 可以用 + 连接两个字符串
- print str1 + str2
- # 字符串长度
- print len(str1)
- # 字符串的查找
- print str1.find('he')
- # 逆向查找
- print str1.rfind('he')
- # 字符串的替换
- print str1.replace('he', 'zz')
- # 将字符串分隔为token,存储在一个list结构中
- tokens = str1.split()
- for i in tokens:
- print i
- # 将token list组合成字符串,中间用逗号隔开
- str4 = ','.join(tokens)
- print str4
- # 继续将其分隔开
- print str4.split(',')
- # 中文字符的输出,需要加上开头第一行,否则会发生错误
- print '你好'
- # 如果有多个分隔符,请用正则表达式
- # 使用正则表达式首先需要导入模块
- import re
- # 然后使用compile()编译得到正则表达式对象
- # 假设我们的分隔符是xx和yy
- regex_delimiter = re.compile('xx|yy')
- # 然后可以正则表达式的split方法得到token
- print regex_delimiter.split('adfaxxdsafyydsaxxsd')
- # 正则表达式另一个常用函数findall,可用于匹配某类字符串
- # 假设我们需要匹配数字
- regex_delimiter = re.compile('[0-9.]+')
- print regex_delimiter.findall('height:173cm weight:100.0kg')
格式化字符串,与c语言十分类似:
| 格式 | 描述 |
|---|---|
| %% | 百分号标记 |
| %c | 字符及其ASCII码 |
| %s | 字符串 |
| %d | 有符号整数(十进制) |
| %u | 无符号整数(十进制) |
| %o | 无符号整数(八进制) |
| %x | 无符号整数(十六进制) |
| %X | 无符号整数(十六进制大写字符) |
| %e | 浮点数字(科学计数法) |
| %E | 浮点数字(科学计数法,用E代替e) |
| %f | 浮点数字(用小数点符号) |
| %g | 浮点数字(根据值的大小采用%e或%f) |
| %G | 浮点数字(类似于%g) |
| %p | 指针(用十六进制打印值的内存地址) |
| %n | 存储输出字符的数量放进参数列表的下一个变量中 |
字符串与数字的相互转化:
1.字符串转数字
string.atoi(s[,base]) s 进行转换的字符串 ; base为可选参数,表示将字符转换成的进制类型
2.数字转字符串
示例: '10'+str(4)
原始字符串
以大写或小写R开始,“\”不再表示转义字符的含义。
示例://用其可以方便的表示windows系统下的路径,但是,路径不能以\结尾
>>> import os
>>> path=r'c:\python25'
>>> os.listdir(path)
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'tcl', 'test', 'Tools', 'w9xpopen.exe']
3)列表和元组
列表以方括号[]包围,不同成员以逗号,分隔.
元组以圆括号包围,一旦确立,不能更改。
详解:
元组
个人认为就像java的数组,python中的元组有以下特性:
- 任意对象的有序集合,这条没啥说的,数组的同性;
- 通过偏移读取;
- 一旦生成,不可改变;
- 固定长度,支持嵌套
来例子吧:
上面的例子足以说明大部分了,使用元组时最重要的一点是“一旦生成,就不可变了”。
列表
列表就像java里的collection,所具有的特性也要比元组更多,更灵活,其character总结如下:
- 任意对象的有序集合;
- 可通过偏移存取,注意,列表中的元素都是可变的,这是不同于元组的;
- 长度可变,支持嵌套;
- 还有一些类似java的对象引用机制
由于列表的这些特性,使得列表在实际应用中被广泛使用,下面是一些例子。
1) 首先是基本用法
2) 索引和分片,赋值(单个元素赋值,分片赋值)
3) 添加、排序、删除操作
4)一些有趣的用法(来自论坛 id—咖啡舞者)
去掉列表中每个元素头尾的空格:
把列表中,大于3的元素,乘以2:
把列表1的每一个元素和列表2的每一个元素相乘:
4)字典
以大括号{}包围的数据集合.
python里的字典就像java里的HashMap,以键值对的方式存在并操作,其特点如下
- 通过键来存取,而非偏移量;
- 键值对是无序的;
- 键和值可以是任意对象;
- 长度可变,任意嵌套;
- 在字典里,不能再有序列操作,虽然字典在某些方面与列表类似,但不要把列表套在字典上
1) 基本操作
2) 修改,删除,添加
在这里需要来一句,对于字典的扩充,只需定义一个新的键值对即可,而对于列表,就只能用append方法或分片赋值。
3)对字典的遍历
5)文件
1) 文件写
python的一个open语句就打开了一个文件(当给定的文件不存在时,会自动建立一个新的文件)。open的第一个参数是文件名,第二个参数是操作模式,所谓操作模式就是你打开一个文件是用来干什么的,是读,还是写(当然操作模式不仅只有读和写)。还有一件事,操作完要记得关。
2) 文件读
参考:
http://blog.csdn.net/krrrr/article/details/5394644
http://www.cnblogs.com/end/archive/2011/05/02/2034628.html
浙公网安备 33010602011771号