python 基础数据类型 (一)

字符串

字符串是最 Python 中常用的数据类型,可以对字符串进行索引,切片及迭代。

在python中字符串是不可变的,一旦声明,不能改变;对字符串变量的赋值和修改实际上是新建了一个相同变量名的对象。
注意:由于字符串是不可变的,在使用索引修改字符串是不允许的

var1 = 'python'
print id(var1)
var1 = 'PHP'
print id(var1)
 
var1 = 'python'
print id(var1)
var1 = var1 + 'hello world'  
print id(var1)
31385280
37524841
41536543
38144556
对比发现修改这些对字符串的修改、赋值实际上是创建了一个新的变量(它们的地址都不相同)

字符串的基本操作

+           :string1+string2            #联接字符串,将后一个串链接到前一个串的后面
*           :string*n                   #创建一个新字符串重复n次原来的串
[]          :string[n]                  #从字符串中获取对应位置的一个字符
[:]         :string[n:m]                #截取字符串,如果为:m从头到m如果为n:从n到尾
in          :char in string             #判断一个字符(串)是否在串中,如果在返回为真(True)
not in      :char not in string         #判断一个字符(串)是否不在串中,如果在返回为真(True)
r/R         :r'hello\r\nworld'   R'hello\r\nworld'  #禁止转义字符的实际意义,整个字符为原始意义
%           :'hello %s'%('world')       #格式化字符串
len()       : 长度len(s),与s.__len__()功能相同(其实len(s)本来就是调用的s.__len__())

Unicode字符串
python定义一个 Unicode 字符串和定义一个普通字符串一样

u'Hello World !'
但是它还可以自动转换Unicode-Escape 编码的字符
u'Hello\u0020World !' = u'Hello World !'

常用的几个方法

可以使用dir(str)查看有哪些内建函数

string = ''
string.find('str')                  #成功返回所在字符串的下标,失败返回负数
string.isalnum()                    #字符串的元素是否全为数字,是:true,否:false
string.replace('old', 'new')        #替换字符串中的‘on’为‘oner’,并返回新的字符串
string.split('str')                 #按照'str'拆分字符串,返回一个列表(但注意,不要让被拆分的字符串长度(str)大于原字符串(string)的长度)
string.strip()                      #默认截掉字符串两边的空格,也可带参数:string.strip(str) 截掉字符串两端的str,如果有的话
string.count('sub')                 #统计'sub'在字符串中出现的次数
','.join(object)                    #以','为分割,合并一个可迭代的对象为字符串(但迭代的值必须为string)

使用格式化字符串比以‘+’连接字符串效率高(但是我测试了100W次,没发现大的区别)
就好像range和xrange,当次数小于10W时range占得资源并不多。效率也要高一些当大于100W时xrange效率更高


列表

基本操作

len([1, 2, 3])                    3                        长度
[1, 2, 3] + [4, 5]             [1, 2, 3, 4, 5]             组合
['Hi!'] * 3                   ['Hi!','Hi!','Hi!']          重复
3 in [1, 2, 3]                  True                       元素是否存在于列表中
for x in [1, 2, 3]: print x,    1 2 3                      迭代
del l[2] (l = [1,2,3])          [1,3]                      删除元素
del l (l = [1,2,3])              None                      删除列表

内建函数

list.append(obj)            在列表末尾添加新的对象
list.count(obj)             统计某个元素在列表中出现的次数
list.extend(seq)            在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)             从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)     将对象插入列表
list.pop(obj=list[-1])      移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)            移除列表中某个值的第一个匹配项
list.reverse()              反向列表中元素
list.sort([func])           对原列表进行排序


元组

元组与列表类似,但是元组的元素不能修改

t = (1,2,3,4)
t[1] = 0     #这种方式是错误的
同样也不能使用del单独删除某一元素,但可以删除整个元组

t1 = (1,2)
t2 = (3,4)
t3 = t1 + t2    #合并两个元组称为新的元组

tuple(obj)可以将可迭代的对象生成一个新的元组


字典

基本操作

dic['key'] = value        修改或增加字典元素
del dic['key']            删除字典元素
del dic                   删除字典
内置函数

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


集合

集合与列表相似,但值不能重复
set()可以把可迭代对象生成集合类型,并将删除重复的值(可以利用这个特性,对某些对象去重)
基本操作

&            取交集
|            取并集
-            取差集

注意:

列表和字典在方法调用时是以引用的方式传递参数的,如果不希望在后面代码中使用被调用方法修改后的值,可以在参数传递之前,使用深拷贝将值复制给另一个参数。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章