从零开始学python(一):序列

序列:

1.列表
2.元组
3.字符串
4.字典

通用序列操作:

1.索引(访问单个元素):

从0开始递增,若使用负数,最右边元素(即最后一个)为-1。(原因:不能和第一个元素重复)

2.分片(访问一定范围内元素):通过冒号隔开的两个索引实现。[ )

例:

>>>numbers=[1,2,3,4,5,6,7,8,9,10]
>>>numbers[3:6]    
>[4,5,6]
>>>numbers[-3:-1]  
>[8,9]
>>>numbers[-3:0]   
>[] (原因:只要冒号左边索引比右边的晚出现在序列中,则输出空序列)
>>>numbers[-3:]     
>[8,9,10]
>>>numbers[:3] 
>[1,2,3]
>>>numbers[:]
>[1,2,3,4,5,6,7,8,9,10]

步长:默认为1,可为负数(代表从右开始)

>>>numbers[0:10:2]    
>[1,3,5,7,9]
>>>numbers[::4]         
>[1,5,9]
>>>numbers[0:10:-2]   
>[] (原因:只要冒号左边索引比右边的晚出现在序列中,则输出空序列。即是用负数步长时,冒号左侧索引必须大于右侧索引)
>>>numbers[8:3:-1]      
>[9,8,7,6,5]

3.相加

>>>[1,2,3]+[4,5,6]
>[1,2,3,4,5,6]
>>>'hello,'+'world'
>'hello,world'
>>>[1,2,3]+'hello'
>报错,列表和字符串无法相加。(两种不同类型的序列不能进行连接操作)

4.相乘

重复序列操作

>>>[2]*4
>[2,2,2,2]

5.成员资格

in操作符,若存在返回True,否则返回False。

6.长度,最大值和最小值

内建函数:len min max

列表(list)–可变 []

1.list函数

>>>list(“hello”)
>['h','e','l','l','o']

2.赋值

>>>x[1,2,3]
>>>x[1]=1
>>>x
>[1,1,3]

3.删除元素

del list1[1]

4.分片赋值

不等长分片替换:

>>>name=list('Perl')
>>>name[1:]=list('ython')
>>>name
>['P','y','t','h','o','n']

插入序列:

>>>numbers=[1,5]
>>>numbers[1:1]=[2,3,4]
>>>numbers
>[1,2,3,4,5]

删除序列:(效果等同于del numbers[1:4])

扫描二维码关注公众号,回复: 5592882 查看本文章
>>>numbers[1:4]=[]
>>>numbers
>[1,5]

5.列表方法

1.append

在列表末尾追加新对象,直接修改原列表。

2.count

统计某个元素在列表中出现的次数

3.extend

在列表末尾一次性追加另一个序列中的多个值。
list1.extend(list2) 此操作修改了list1

>>>list1=[1,2,3]
>>>list2=[4,5,6]
>>>list1.extend(list2)
>>>list1
>[1,2,3,4,5,6]

但是原始的连接操作,是创建了一个包含list1和list2副本的新列表,没有改变list1。所以原始的连接操作的效率要比extend方法低。

>>>list1=[1,2,3]
>>>list2=[4,5,6]
>>>list1+list2
>[1,2,3,4,5,6]
>>>list1
>[1,2,3]

4.index

用于从列表中找出某个值第一个匹配项的索引位置,若不存在则返回异常。

5.insert

>>>numbers=[1,2,3,4,5,6]
>>>numbers.insert(3,'four')
>>>numbers
>[1,2,3,'four',4,5,6]

6.pop

移除列表中的一个元素(默认最后一个),并返回该元素的值。
注:pop是唯一一个既能修改列表又能返回元素值的列表方法。

7.remove

移除列表中某个值的第一个匹配项。若不存在,会报错。

8.reverse

将列表中的元素反向存放。

9.sort

在原位置对列表进行排序。

>>>x=[4,6,2,1,7,9]
>>>x.sort()
>>>x
>[1,2,4,6,7,9]

当用户需要一个排好序的列表副本,又想保持原有列表不变的时候:

>>>x=[4,6,2,1,7,9]
>>>y=x[:]
>>>y
>[1,2,4,6,7,9]
>>>x
>[4,6,2,1,7,9]

注:这里用了分片的方法复制了整个列表。x=y实现的是让x和y指向同一个列表。

改变了列表,却没有返回值。(remove,reverse,sort)

10.高级排序

1.cmp(x,y) x<y时返回负数,x>y时返回正数,x=y时返回0。
sort函数有另外两个可选的参数—key和reverse
x.sort(key=len)//根据元素的长度进行排序
x.sort(reverse=True) //列表是否要进行反向排序

元组–不可变()

1.创建元组

>>>1,2,3  //使用逗号分隔了一些值 或(1,2,3)
>(1,2,3)
>>>() //空元组可以使用没有包含内容的两个圆括号来表示
>()
>>>(1,)  //包括一个值的元组,必须加个逗号
>(1,)

2.tuple函数

以一个序列作为参数,把它转换为元组。

>>>tuple([1,2,3])
>(1,2,3)
>>>tuple(’abc')
>('a','b','c')

除了创建元组和访问元组元素外,没有太多其他操作。

字符串-不可变

1.字符串格式化(%)

>>>format="Hello,%s.%s enough for ya?"
>>>values=('world','Hot')
>>>print format % values
>Hello,world. Hot enough for ya?

只有元组和字典可以格式化一个以上的值。
%s为转换说明符。
%s 字符串 str
%f 浮点数 %.3f 3是精度

需要抓换的元组必须用圆括号括起来。

>>>'%s plus %s equals %s' % (1,1,2)
>'1 plus 1 equals 2'

字段宽度和精度

>>>'%10.2f' % Pi
>'        3.14' //10是字段宽度,2是精度

2.字符串方法

1.find

查找子串,返回子串所在位置的最左端索引,若没找到,返回-1。

>>>title.find('str')

还可接受可选的起始点和结束点参数

>>>title.find('str',1) #只提供起始点
>>>title.find('str',1,20) #提供了起始点和结束点

rfind index rindex count startwith endswith

2.join

split方法的逆方法,连接序列中的元素(必须都是字符串)。

>>>seq=['1','2','3','4','5']
>>>sep = '+'
>>>sep.join(seq)#连接字符串列表
>'1+2+3+4+5'
>>>dirs='','usr','bin','env'
>>>'/'.join(dirs)
>'/usr/bin/env'

3.lower

返回字符串的小写字母。
islower capitalize swapcase title istitle upper isupper
注:title方法会将字符串转换为标题,所有单词首字母大写。

4.replace

返回某字符串的所有匹配项均被替换之后得到的字符串。

>>>'This is a test'.replace('is','eez)
>'Theez eez a test'

5.split

将字符串分割成序列。

>>>'1+2+3+4+5'.split('+')
>['1','2','3','4','5']
>>>'/usr/bin/env'.split('/')
>['','usr','bin','env']

6.strip

返回去除两侧(不包括内部)空格的字符串。
也可指定需要去除的字符:
str.strip(‘str1’)

>>>'*** SPAM is ** dsaf ** everyone!!!***'.strip('*!')
>'SPAM is ** dsaf ** everyone'

7.translate

和replace类似,可以替换字符串中的某些部分,但是translate只能处理单个字符,优势在于可以同时进行多个替换,效率高。
使用translate转换之前,需要完成一张转换表。(使用string模块中的maketrans函数)

>>>from string import maketrans
>>>table = maketrans('cs','kz') #c替换为k,s替换为z
>>>'this is an incredible test'.translate(table)
>'thiz iz an inkredible tezt'

translate第二个参数是可选的,用来指定需要删除的字符。

>>>'this is an incredible test'.translate(table,‘ ’)
>'thizizaninkredibletezt'

字典-{键:值,键:值}

1.创建字典

dict函数,可以通过其他字典或者(键,值)对的序列建立字典。

>>>item=[('name','gummy'),('age',42)]
>>>d=dict(item)
>>>d
>{'age':42,'name':'gummy'}
>>>d['name']
>'gummy'

dict函数也可以通过关键字参数来创建字典:

>>>d = dict(name='gummy',age=42)
>>>d
>{'age':42,'name':'gummy'}

2.基本字典操作

  • len(d) 返回键值对数量
  • d[k] 键k对应的值
  • d[k]=v 更新键k的值为v
  • del d[k] 删除键为k的项
  • k in d 检查d中是否有含有键为k的项
    **键类型:**可以是任意的不可变类型(整型,浮点型,字符串或元组)。
    **自动添加:**即使键起初在字典中并不存在,也可以为它赋值,即创建新的项。
>>>x=[]
>>>x[42]='floor'
>报错
>>>x={}
>>>x[42]='floor'
>>>x
>{42,'floor'}

3.字典的格式化字符串

%(键)说明元素

>>>phonebook={'a':'9102','b':'2341','c':'3258'}
>>>"c's phone number is %(c)s."%phonebook
>c's phone number is 3258

4.字典方法

(1)clear

清除字典中所有的项。原地操作,无返回值(或者说返回None)

>>>x={}
>>>y=x
>>>x['key']='value'
>>>y
>{'key':'value'}
>>>x={} #x关联到一个新的空字典,对y没有影响,y仍然关联到原先的字典
>>>y
>{'key':'value'}
>>>x={}
>>>y=x
>>>x['key']='value'
>>>y
>{'key':'value'}
>>>x.clear() #清空原始字典中的所有元素
>>>y
>{'key':'value'}

(2)copy

返回一个具有相同键值对的新字典(浅复制,不是副本)

>>>y=x.copy() 

深复制:copy模块的deepcopy函数

(3)fromkeys

使用给定的键建立新的字典,每个键都对应一个默认的值None

>>>dict.formkeys(['name','age'],'value')
>['age':'value','name':'value']

(4)get

一般试图访问字典中不存在的项时会出错

>>>d={}
>>>d['name']
>报错

但是get访问一个不存在的键时,没有任何异常,得到了None值,或自定义返回值。

>>>print d.get('name')
>None
>>>>print d.get('name',‘N/A’)
>N/A

(5)has_key

检查字典中是否含有特定的键:d.has_key(k) 相当于k in d

(6)items 和 iteritems

items方法将字典所有的项以列表方式(每一项都表示为(键,值)对)返回,但无序。

>>>d={'k1':'v1','k2':'v2','k3':'v3'}
>>>d.items()
>[('k2','v2'),('k1','v1),('k3','v3')]

(7)keys和 iterkeys

keys将字典中的键以列表形式返回。

(8)pop

pop用来获得对应于给定键的值,然后将这个键值对从字典中移除。

>>>d={'x':1,'y':2}
>>>d.pop('x')
>1
>>>d
>{'y':2}

(9)popitem

list.pop弹出列表的最后一个元素,但popitem弹出随机项(因为字典无序)

(10)setdefault

类似于get,而且能够在字典不含有给定键的情况下设定相应的键值。

>>>d={}
>>> d.setdefault('name','N/A')
>N/A
>>>>d
>{'name':'N/A'}
>>>d['name']='gummy'
>>> d.setdefault('name','N/A')
>'gummy'
>>>>>d
>{'name':'gummy'}

(11)update

利用一个字典项更新另外一个字典,提供的字典中的项会被添加到旧字典中,若有相同的键会进行覆盖。

>>>d={'k1':'v1','k2':'v2','k3':'v3'}
>>>x={'k2':'v20'}
>>>d.update(x)
>>>d
>{'k1':'v1','k2':'v20','k3':'v3'}

(12)values和itervalues

values以列表的形式返回字典中的值,可以包含重复的元素(因为值是可以重复的)

猜你喜欢

转载自blog.csdn.net/sandrew0916/article/details/88048340