python基础知识学习(2)

一.列表:

1.1——基础介绍

数组(Array)是由有限个元素组成有序集合,用序号进行索引。事实上,列表就类似数组这个数据结构,它为每个元素分配了一个序号。在Python中,将这种有顺序编号的结构称之为“序列”,序列主要包括:列表、元组、字符串等

 字符串的声明是在“ ”或者‘ ’内的,对于列表,它的声明形式为:L=[ ],执行这条语句时,将产生一个空列表。列表中的元素以“,”相间隔,例如,语句L=[1,3,5]定义了一个含有三个元素的列表。元素之间用‘,’相间隔。

注意,不同于数组,列表中的元素类型可以是不一样的,列表中的元素可以是整数型,浮点型,字符串,还可是列表。

例如,L=[1,1.3,’2’,”China”,[‘I’,’am’,’another’,’list’]]。

这在对列表元素进行操作时,一定要注意元素类型,例如上述的L,如L[0]+L[2]操作将产生错误,因为整数型不能与字符串相加,而str(L[0])+L[2],与L[0]+int(L[2])都是正确的,不过第一个表达式得到的结果为“12”,而第二个结果为3。

序号

操作符

说明

1

seq[index]

获得下标为index 的元素

2

seq[index1:index2(:stride)]

获得下标从index1 到index2 间的元素集合,步长为stride

3

seq1 + seq2

连接序列seq1 和seq2

4

seq * expr

序列重复expr 次

5

obj in seq

判断obj 元素是否包含在seq 中

序列中的所有元素都是有索引号的(注意:索引号是从 0 开始递增的)。这些元素可以通过索引号分别访问。

这时,就可以使用下标操作符“[index]”来获取,index称之为下标。

#<程序:序列索引>

L=[1,1.3,"2","China",["I","am","another","list"]]

print(L[0])
>>>1

当索引值为负数时,它表示从序列最后一个元素开始计数。

注意,如果下标值超出了序列的范围,Python解释器将会报错,提示下标超出范围。比如,该L的合法范围是[-5, 4]。

Python对序列提供了强大的分片操作,运算符仍然为下标运算符,而分片内容通过冒号相隔的两个索引来实现。例如,L[index1:index2]:index1是分片结果的第1个元素的索引号,其遵循左闭右开。

如果index2≤index1,那么分片结果将为空串。

如果index2置空,分片结果将包括索引为index1及之后的所有元素。

如果index1置空,表示从序列开头0到index2的分片结果。而当index1与index2都置空时,将复制整个序列,例如L[:]

分片操作的形式还可以是L[index1:index2:stride],第三个数stride是步长,在没有指定的情况下,默认为1。如果步长大于1,那么就会跳过某些元素,

如,要得到L的奇数位的元素时,L[::2]即可实现。

注意,步长不能为0,但可以为负数,表示从右向左提取元素。

例如,L[-1:-1-len(L):-1]会产生最后一个元素开始往前到第一个元素的序列,len(L)函数是返回序列L的长度。

注意,分片操作是产生新的序列,不会改变原来的序列。

两个整数类型相加是整数值做加法,而对于两个序列,加法则表示连接操作,需要注意的是,进行操作的两个序列必须是相同类型(字符串、列表、元组等)才可以进行连接。

序列的乘法表示将原来的序列重复多次。

例如L=[0]*100会产生一个含有100个0的列表。这个操作对初始化一个有足够长度的列表是有用的。

序号

函数

说明

1

len(seq)

返回序列seq的元素个数

2

min(seq)

返回序列中的"最小值"

3

max(seq)

返回序列中的"最大值"

4

sum(seq[index1:index2])

序列求和。(注:字符串类型不适用

列表还有额外的很多方法(method),这里的方法事实上与函数是一个概念,不过,它是专属于列表的,其他的序列类型是无法使用这些方法的。这些专用方法的调用方式与通用序列函数调用方式不同。 

参数中的[]符号表示该参数可以传递也可以不传递。

如s.pop(),若不传递参数,s将最后一个元素弹出,否则s.pop(i)将弹出s中第i号位置的元素。

例:s=[1,2]

函数

作用/返回

参数

s结果/返回

1

s.append(x)

将一个数据添加到列表s的末尾

'3'

[1,2,'3']

2

s.clear()

删除列表s的所有元素

[]

3

s.copy()

返回与s内容一样的列表

[1,2]/[1,2]

4

s.extend(t)

将列表t添加到列表s的末尾

['3','4']

[1,2,'3','4']

5

s.insert(i, x)

将数据x插入到s的第i号位置

0,'3'

['3',1,2]

6

s.pop(i)

将列表s第i个元素弹出并返回其值

1或无

[1]/2

7

s.remove(x)

删除列表s中第一个值为x的元素

1

[2]

8

s.reverse()

反转s中的所有元素

[2,1]

1.2 列表——遍历

遍历,即要依次对列表中的所有元素进行访问(操作),对列表这种线性数据结构最自然的遍历方式就是循环。  

#<程序:for循环对列表进行遍历>

L = [1,3,5,7,9,11]
for e in L:
    e+=1    
    print(e)
#<程序:while循环对列表进行遍历>

L = [1,3,5,7,9,11]
mlen = len(L)
i =0
while(i<mlen):
    print(L[i]+1)
    i += 1

while循环:

其一般格式如下:首行会对一个bool变量<test1>进行检测,下面是要重复的语句块<语句块1>,在执行完<语句块1>后重新回到while首行检查<test1>的值。最后有一个可选的else部分,如果在循环体中没有遇到break语句,就会执行else部分,即<语句块2>。

while<test1>:

<语句块1>

else:

<语句块2>

for循环:

其一般格式如下:首行会定义一个赋值目标<target>,in后面跟着要遍历的对象<object>,下面是想要重复的语句块。同while循环,for循环也有一个else子句,如果在for循环的结构体中没有遇到break语句,那么就会执行else子句。

for <target> in <object>:

  <语句块1>

else:

  <语句块2>

另外用range()函数也可以产生遍历的索引,其也遵循左闭右开

可以用list(range(0:x))来产生一个从0开始到x-1的列表[0,1,2,…,x-1]。

二.字符串

同列表一样,字符串也实现了序列的通用操作与函数。

注意:字符串内容是不可改变(immutable变量)。

字符串对某一个索引所在位置进行赋值是不允许的,例如,s = “Hello world?”,想要将”?”改为”!”,如果使用s[11]=’!’,这是不允许的。

另外,在列表中,一个列表变量调用自己的专用方法,将反应到列表本身,但在字符串中,调用其自己的专用方法,其自身的内容是不变的。

在参数中的[ ]表示调用方法时,该参数可以传递也可以省略。

函数

作用/返回

参数

print结果

1

str.capitalize()

首字母大写,其它小写的字符串

Hello

2

str.count(sub[, start[, end]])

统计sub字符串出现的次数

'O'

1

3

str.isalnum()

判断是否是字母或数字

TRUE

4

str.isalpha()

判断是否是字母

TRUE

5

str.isdigit()

判断是否是数字

FALSE

6

str.strip([chars])

开头结尾不包含chars中的字符

'HEO'

'll'

7

str.split([sep], [maxsplit])

以sep为分隔符分割字符串

'll'

['HE','O']

8

str.upper()

返回字符均为大写的str

HELLO

9

str.find(sub[, start[, end]])

查找sub第一次出现的位置

'll'

2

10

str.replace(old, new[, count])

在str中,用new替换old

'l','L'

HELLO

#str.capitalize():将字符串的第一个字母变成大写,其他字母变小写。

>>>s = 'a, B’
>>> print(s.capitalize())
'A, b’

>>> s = ' a, B' # a 前面有空格
>>> print(s.capitalize())
' a, b’

>>> s = ‘a, BCD’
>>>print(s.capitalize())
'A, bcd'
'''Str.count() 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
str.count(sub, start= 0,end=len(string))'''

str = "abcdefgsdafdfagda"
print(str.count("d", 2, 15))
>>3
#表示统计str中索引为2和14位置’d’出现的次数。
#str.isalnum():检测字符串是否由字母和数字组成。

>>>str = "this2009";
>>>Print( str.isalnum());
True

>>>str = "this is string example....wow!!!";
>>>print(str.isalnum());
False
#str.isalpha():检测字符串是否只由字母或文字组成。

>>>str = "runoob"
>>>print (str.isalpha())
True

>>>str = "runoob菜鸟教程”
>>>print (str.isalpha())
True

>>>str = "Runoob example....wow!!!”
>>>print (str.isalpha())
False
#str.isdigit():检测字符串是否只由数字组成。

>>>str = "123456"
>>>print (str.isdigit())
True

>>>str = "Runoob example....wow!!!”
>>>print (str.isdigit())
False
#str.strip([chars]):用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列.

>>>str = "00000003210Runoob01230000000";
>>>Print( str.strip( '0' )); # 去除首尾字符 0
3210Runoob0123

>>>str2 = " Runoob "; # 去除首尾空格
>>>Print( str2.strip( ));
Runoob

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

'''str.split([sep], [maxsplit]):通过指定分隔符对字符串进行切片,如果第二个参数 maxsplit 有指定的值,则分割为 maxsplit +1 个子字符串。
sep -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
maxsplit -- 分割次数。默认为 -1, 即分隔所有。'''

>>>str = "this is string example....wow!!!"
>>>print (str.split( )) # 以空格为分隔符
>>>print (str.split('i',1)) # 以 i 为分隔符 ,分割一次
>>>print (str.split('w')) # 以 w 为分隔符

['this', 'is', 'string', 'example....wow!!!’]
['th', 's is string example....wow!!!’]
['this is string example....', 'o', '!!!']
#str.upper():将字符串中的小写字母转为大写字母。

>>>str = "this is string example....wow!!!"
>>>Print( str.upper())

THIS IS STRING EXAMPLE....WOW!!!
#str.find(sub[, start[, end]]):检测字符串中是否包含子字符串 sub ,如果指定 start (开始索引,默 #认为0 ) 和 end(结束索引,默认为字符串的长度) 范围,则检查是否包含在指定范围内,如果包含子字符串 #返回开始的索引值,否则返回-1。

>>>str1 = "this is string example....wow!!!";
>>>str2 = "exam";
>>>print str1.find(str2);
>>>print str1.find(str2, 10);
>>>print str1.find(str2, 40);

15
15
-1
#str.replace(old, new[, count]):把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三 #个参数max,则替换不超过 count 次。

>>>str = "this is string example....wow!!! this is really string";
>>>print str.replace("is", "was");
>>>print str.replace("is", "was", 3);

thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! thwas is really string

2.2再谈字符串——字符串与数值型相互转化。

将字符串类型转换成相应的数值类型则需要调用相应的转换函数。

例如,int()函数可以将字符串转化为整数,float()函数可以将字符串转化为浮点数,比如str=”123”,那么int(str)的返回值为123;如果str=“123.45”,那么float(str)的返回值为123.45。

如果希望将字符串的每一个字符作为一个元素保存在一个列表中,可以使用list()函数,比如str=“123, 45”,list(str)的返回值为[‘1’, ‘2’,‘3’,‘,’,‘’,‘4’,‘5’]。注意逗号’,’和空白‘’都当做一个字符。

如果希望将字符串分开,那么可以使用字符串专用方法split。例如,str=“123, 45”,将其以“,”分割,使用L=str.split(“,”)便可实现。其返回值是一个列表[“123”,“45”],需要注意的是,得到的列表中每个元素都是字符串类型,空白仍然在字符串“ 45”里面的。如果要得到整数类型的,还需要将字符串转化为数值.

使用L=[int(e) for e in L]可将L=[“123”,“45”]转化为单纯的整数列表L=[123,45]。

三.字典

字符串、列表、元组都是序列,而Python的基本数据结构,除了序列外,还包括映射。字典是Python中唯一的映射类型。字典的形式为{ }。

字典中的每一个元素都是一个键值对(Key:Value),而键Key在字典中只会出现一次。键是集合X中的一个元素,而Value指的是集合Y中的一个元素,而f(key)=value。

与序列一样,映射也有内置操作符与内置函数,最常用的内置操作符仍然是下标操作符[],例如mdict[‘H’],将返回键’H’所对应的value,即1。

操作符[]也可以作为字典赋值使用。例如,mdict[‘H’]=1,假如mdict里面没有‘H’、这个键,就会将‘H’:1加入mdict里面,假如有‘H’这个键,其值就被更改为1了。

另外,in与not in在字典中仍然适用,例如’o’ in mdict将返回True,而’z’ in mdict将返回False。

最常用的函数是len(dict),它将返回字典中键值对的个数。

函数

作用/返回

参数

print结果

1

mdict.clear()

清空mdict的键值对

{}

2

mdict.copy()

得到字典mdict的一个拷贝

{'H':1, 'e':2}

3

mdict.items()

得到一个list的全部键值对

[('H',1),('e',2)]

4

mdict.keys()

得到一个list的全部键

['H','e']

5

mdict.update([b])

以b字典更新a字典

{'H':3}

{'H':3,'e':2}

6

mdict.values()

得到一个list的全部值

[1,2]

7

mdict.get(k[, x])

若mdict[k]存在则返回,否则返回x

'o',0

0

8

mdict.setdefault(k[, x])

若mdict[k]不存在,则添加k:x

'x':3

{'H':1,'e':2,'x':3}

9

mdict.pop(k[, x])

若mdict[k]存在,则删除

H

{'e':2}

#<程序:统计字符串中各字符出现次数>
>>>mstr = "Hello world, I am using Python to program, it is very easy to implement."
mlist = list(mstr)
mdict = {}
for e in mlist:
if mdict.get(e,-1)==-1: #还没出现过
mdict[e]=1
else:    #出现过
mdict[e]+=1
for key,value in mdict.items():
print (key,value)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值