python创建元组并输出_Python基础入门第五章列表元组和字符串

第五章 列表、元组和字符串

5.1 列表 (由于Python的变量没有数据类型,python是没有数组的,加入更强大的list)

5.1.1 创建列表

>>>number = [1, 2, 3, 4, 5]

>>>mix = [1, "小甲鱼", 3.14 ,

[1, 2, 3] ]

empty = [

]

5.1.2 向列表中添加元素

>>>number = [1, 2,

3, 4, 5]

>>>number.

append(6)

可以看到参数6以经被添加到列表number的末尾了

>>>number.

extend([7,8])可以使用extend()方法使用一个列表扩展另一个列表

>>>number.

insert(0 ,

0)insert在任意位置插入元素,第一个参数表示位置,第二个参数元素

5.1.3 从列表中获取元素

>>>number[0] #列表元素位置互换

5.1.4 从列表中删除元素

三种方法:remove() ,del 和

pop()

用法:number.

remove(1) 删除元素不需要知道元素具体位置,只要存在就可以,删除1

del number[1]

del是一个语句不是列表的方法,不必加小括号。删除第一个元素

del number删除

整个列表

name.

pop()弹出列表最后一个元素 name.pop(2)弹出第三个元素

5.1.5 列表分片

>>>number[ 0:

2]结束位置上的元素不包含,原来列表不变化

>>>number[ : 2 ] >>>>number[

0 : ] number[ : ]

>>>list = [1,2,3,4,5,6,7,8,9]

>>>list[0:9:2] [1,3,5,7,9] #选取0到第九个元素,步数间隔2

>>>list[: : -1] [9,8,7,6,5,4,3,2,1]

补充:

>>>list1 =

[1,3,2]

>>>list2 = list1[ :

]

>>>list3 =

list1

>>>list1.sort()

>>>list1 [1,2,3]

>>>list2 [1,3,2] #使用分片方式得到的列表相当于复制

>>>list3 [1,2,3] #为一个列表指定另一个名字,只是向同一个列表增加一个新的标签而已

5.1.6 一些常用字符串

字符串可以用加号(+)也叫连接操作符 来进行连接,用乘号(*)也叫重复操作符来

复制自身若干次。它们在列表身上也是可以实现的 #列表可以相加

>>>list1 = [123,456]

>>>list2 = [234,123]

>>>list = list1 + list2

>>>list [123,456,234,123]

一般建议使用extend()语句,连接操作符+不能实现列表添加元素

>>>list1 = [123]

>>>list1 * 3 [123 , 123,

123]

>>>list1 *= 4 [123,123,123,123]

另一个成员操作符 in

和 not in!

>>>list1 =

["小猪","小猫",["小甲鱼","小护士"],"小狗"]

>>>“小甲鱼” in list1[2] True

>>>“小护士" not in list1[2] False

in 和 not in

只能判断一个层次成员关系

>>>list1[2][0] 小甲鱼

5.1.8 列表的小伙伴

>>>dir(list) 查看列表 #dir()函数可以查询到该模块定义了哪些变量、函数和类。

count()计算参数在列表中出现次数

>>>list1 =

[1,2,1,3]

>>>list1.count(1) 2

index()这个方法返回参数在列表中位置

>>>list1.index(1) 0 可以看到这里返回的是第一个目标在list1中位置

>>>start =

list1.index(1) + 1

>>>stop =

len(list1)

>>>list1.index(1,start,stop) 1 返回第二个目标在list1中位置

reverse()将整个列表原地翻转

>>>list1 =

[1,2,3]

>>>list1.reverse()

>>>list1 [3,2,1]

sort()对列表成员进行排序,默认不需要参数

从小到大排序

>>>list1 =

[8,9,3,5,2,6,10,1,0]

>>>list1.sort()

>>>list1 [0,1,2,3,5,8,9,10]

>>>list1.sotr(reverse =

True)

>>>list1 [10,9,8,5,3,2,1,0]

5.2 元组:戴上枷锁的列表

5.2.1 创建和访问一个元组

>>>tuple1 =

(1,2,3,4,5,6) #用小括号

>>>tuple1[1] 2 #访问元组和列表无异

>>>tuple2 = tuple1[

: ] # 分片方式复制一个元组

易混淆点:

>>>temp = (1)

>>>type(temp)

>>>temp =

1,2,3 #

元组类型,,号是关键。列表类型[ ]是关键

>>>type(temp)

>>>temp = ()

>>>type(temp)

>>>8 *

(8) 64

>>>8 *

(8,) (8,8,8,8,8,8,8,8)

5.2.2 更新和删除元组

>>>temp = ("小鸡","

小鸭"," 小猪" )

>>>temp =temp [ :

2]+("小甲鱼",) + temp [2: ] #只是将变量temp指向新的元组

>>>temp ("小鸡","

小鸭","小甲鱼"," 小猪" )

>>>temp =temp [ :

2]+temp [3: ]

>>>temp ("小鸡","

小鸭"," 小猪" )

5.3 字符串

在python并没有字符这个类型,所谓字符就是长度为1的字符串,字符串和元组一样,

都是属于”一言既出驷马难追“的家伙,一旦定下来就不能直接对他们修改,只能将变量

指向新的字符串

5.3.1 各种内置方法

1、去空格及特殊符号

s.strip().lstrip().rstrip(',')

2、复制字符串

#strcpy(sStr1,sStr2)

sStr1 = 'strcpy'

sStr2 = sStr1

sStr1 = 'strcpy2'

print sStr2

3、连接字符串

#strcat(sStr1,sStr2)

sStr1 = 'strcat'

sStr2 = 'append'

sStr1 += sStr2

print sStr1

4、查找字符

#strchr(sStr1,sStr2)

# < 0 为未找到

sStr1 = 'strchr'

sStr2 = 's'

nPos = sStr1.index(sStr2)

print nPos

5、比较字符串

#strcmp(sStr1,sStr2)

sStr1 = 'strchr'

sStr2 = 'strch'

print cmp(sStr1,sStr2)

6、扫描字符串是否包含指定的字符

#strspn(sStr1,sStr2)

sStr1 = '12345678'

sStr2 = '456'

#sStr1 and chars both in sStr1 and sStr2

print len(sStr1 and sStr2)

7、字符串长度

#strlen(sStr1)

sStr1 = 'strlen'

print len(sStr1)

8、将字符串中的大小写转换

S.lower() #小写 S.upper() #大写 S.swapcase() #大小写互换 S.capitalize() #首字母大写 String.capwords(S)

#这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起 #实例:

#strlwr(sStr1)

sStr1 = 'JCstrlwr'

sStr1 = sStr1.upper()

#sStr1 = sStr1.lower()

print sStr1

9、追加指定长度的字符串

#strncat(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = 'abcdef'

n = 3

sStr1 += sStr2[0:n]

print sStr1

10、字符串指定长度比较

#strncmp(sStr1,sStr2,n)

sStr1 = '12345'

sStr2 = '123bc'

n = 3

print cmp(sStr1[0:n],sStr2[0:n])

11、复制指定长度的字符

#strncpy(sStr1,sStr2,n)

sStr1 = ''

sStr2 = '12345'

n = 3

sStr1 = sStr2[0:n]

print sStr1

12、将字符串前n个字符替换为指定的字符

#strnset(sStr1,ch,n)

sStr1 = '12345'

ch = 'r'

n = 3

sStr1 = n * ch + sStr1[3:]

print sStr1

13、扫描字符串

#strpbrk(sStr1,sStr2)

sStr1 = 'cekjgdklab'

sStr2 = 'gka'

nPos = -1

for c in sStr1:

if c in

sStr2:

nPos = sStr1.index(c)

break

print nPos

14、翻转字符串

#strrev(sStr1)

sStr1 = 'abcdefg'

sStr1 = sStr1[::-1]

print sStr1

15、查找字符串

#strstr(sStr1,sStr2)

sStr1 = 'abcdefg'

sStr2 = 'cde'

print sStr1.find(sStr2)

16、分割字符串

#strtok(sStr1,sStr2)

sStr1 = 'ab,cde,fgh,ijk'

sStr2 = ','

sStr1 = sStr1[sStr1.find(sStr2) + 1:]

print sStr1

#或者

s = 'ab,cde,fgh,ijk'

print(s.split(','))

17、连接字符串

delimiter = ','

mylist = ['Brazil', 'Russia', 'India', 'China']

print delimiter.join(mylist)

18、PHP 中 addslashes 的实现

def addslashes(s):

d =

{'"':'\"', "'":"\\'", "\0":"\\\0", "\":"\\\"}

return

''.join(d.get(c, c) for c in s)

s = "John 'Johny' Doe (a.k.a. "Super Joe")\\\0"

print s

print addslashes(s)

19、只显示字母与数字

def OnlyCharNum(s,oth=''):

s2 =

s.lower();

fomart =

'abcdefghijklmnopqrstuvwxyz0123456789'

for c in

s2:

if not c in fomart:

s = s.replace(c,'');

return

s;

print(OnlyStr("a000 aa-b"))

20、截取字符串

str = '0123456789′

print str[0:3] #截取第一位到第三位的字符

print str[:] #截取字符串的全部字符

print str[6:] #截取第七个字符到结尾

print str[:-3] #截取从头开始到倒数第三个字符之前

print str[2] #截取第三个字符

print str[-1] #截取倒数第一个字符

print str[::-1] #创造一个与原字符串顺序相反的字符串

print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符

print str[-3:] #截取倒数第三位到结尾

print str[:-5:-3] #逆序截取,具体啥意思没搞明白?

21、字符串在输出时的对齐

S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。 S.rjust(width,[fillchar]) #右对齐 S.center(width, [fillchar]) #中间对齐 S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足

22、字符串中的搜索和替换

S.find(substr, [start, [end]]) #返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索 S.index(substr, [start, [end]]) #与find()相同,只是在S中没有substr时,会返回一个运行时错误 S.rfind(substr, [start, [end]]) #返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号 S.rindex(substr, [start, [end]]) S.count(substr, [start, [end]])

#计算substr在S中出现的次数 S.replace(oldstr, newstr, [count]) #把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换 S.strip([chars]) #把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None S.lstrip([chars]) S.rstrip([chars]) S.expandtabs([tabsize]) #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个

23、字符串的分割和组合

S.split([sep, [maxsplit]]) #以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符 S.rsplit([sep, [maxsplit]]) S.splitlines([keepends]) #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。 S.join(seq) #把seq代表的序列──字符串序列,用S连接起来

24、字符串的mapping,这一功能包含两个函数

String.maketrans(from, to) #返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。 S.translate(table[,deletechars]) #

使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持

deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。

25、字符串还有一对编码和解码的函数

S.encode([encoding,[errors]]) # 其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5

bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore',

'replace', 'xmlcharrefreplace', 'backslashreplace'

和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块,不是特明白 S.decode([encoding,[errors]])

26、字符串的测试、判断函数,这一类函数在string模块中没有,这些函数返回的都是bool值

S.startswith(prefix[,start[,end]]) #是否以prefix开头 S.endswith(suffix[,start[,end]]) #以suffix结尾 S.isalnum() #是否全是字母和数字,并至少有一个字符 S.isalpha() #是否全是字母,并至少有一个字符 S.isdigit() #是否全是数字,并至少有一个字符 S.isspace() #是否全是空白字符,并至少有一个字符 S.islower() #S中的字母是否全是小写 S.isupper() #S中的字母是否便是大写 S.istitle() #S是否是首字母大写的

27、字符串类型转换函数,这几个函数只在string模块中有

string.atoi(s[,base]) #base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串 string.atol(s[,base]) #转成long

string.atof(s[,base])

#转成float

5.3.2 格式化

格式化字符串就是按照统一的规格去输出一个字符串。

1.

format()

format()方法接受位置参数和关键字参数,二者均传递到由大括号({})表示的replacement字段

例如:

>>>"{0} love {1} .

{2}" . format ("I", "FishC", "com")

' I love FishC . com'

字符串{0}、{2}

{3}应该跟位置有关,依次被format()的三个参数替换,那么format()的三个参数

就叫位置参数

>>>"{a} love {b} .

{c}" .format(a ="I", b = "FishC", c = "com ")

'I love FishC .com'

{a}{b}{c}相当于三个标签,format()将参数中等值的字符串替换进去,这就是关键字参数

>>>"{0} love {b} .

{c}" .format("I", b = "FishC", c

= "com ") #综合使用

>>>"{0} : {1: .2f}"

.format("圆周率",3.14159)

'圆周率:3.14' #位置参数多了冒号,替换中冒号表示格式化符号的开始,“.2”的意思

四舍五入 保留两位小数点,而f的意思是浮点数。

2. 格式化操作符%

符 号

说 明

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化定点数,可指定小数点后的精度

%e

用科学计数法格式化定点数

%E

作用同%e,用科学计数法格式化定点数

%g

根据值的大小决定使用%f活%e

%G

作用同%g,根据值的大小决定使用%f或者%E

使用方法:

%.2f四舍五入保留两位有效数字

仅有一个空时: print

('xxxx%c')

多个空时:print ('%c %c %c'%(97,

98, 99)) 需要使用元组

格式化操作符辅助指令

符 号

说 明

m.n

m是显示的最小总宽度,n是小数点后的位数

-

用于左对齐

+

在正数前面显示加号(+)

#

在八进制数前面显示

'0o',在十六进制数前面显示 '0x' 或 '0X'

0

显示的数字前面填充

'0' 取代空格

使用方法:

m.n:

print('%5.5f'

% 27.55),此时要求,小数点后要有5位数,若不足会自动补全,得到 :'27.55000'

m应该控制占据总长度,不足前面补空格,输出时数据美观

- :

print( '%-010d'

'.55),此时若无 '-' 号时,将得到:'0000000027',若有'-'号,则得到:'27

'# :print('%#o' ),简单易懂,转为8 or

16进制输出

3. python的转义字符及含义

符 号

说 明

\'

单引号

"

双引号

\a

发出系统响铃声

\b

退格符

\n

换行符

\t

横向制表符(TAB)

\v

纵向制表符

\r

回车符

\f

换页符

\o

八进制数代表的字符

\x

十六进制数代表的字符

\0

表示一个空字符

\\

反斜杠

5.4 序列

关于序列的常用BIF

1. list([iterable]) ### 索引 -1

表示最后一个元素

>>>将元组中的每个元素迭代(迭代就是for循环)存放到列表中

>>>c =

list((1,1,2,3,5,8,13))

>>>c [1,1,2,3,5,8,13]

注意:如果之前有定义list这个变量,那么list模块将不可以调用了

要del list才可以

2. tuple([iterable])

将一个可迭代对象转换为元组,具体用法同list

3. str(obj)

用于把obj对象转换为字符串 #obj必须预先定义

4. len(sub)

返回参数的长度

>>>tuple1 = “这”,“是”

>>>len(tuple1) 2

5. max(....)返回序列或者参数集合中的最大值

6. min(...)

返回序列或者参数集合中的最小值

max()和

min()都要保证序列或参数的数据类型一致

7. sum(iterable[,

start])

返回序列iterable总和,如设置可选参数,表示从该数值开始加起,默认是0

>>>tuple1 =

1,2,3

>>>sum(tuple1) 6

>>>sum(tuple1,10) 16

8. sorted(iterable, key=none,

reverse = false)

sort()实现列表原地排序

sorted()是返回一个排序后的新列表

>>>list1 = [1,18,13,0,-98]

>>>list2 = [ : ]

>>>list1.sort() #改变了原来的列表

>>>list1 [-98,0,1,13,18]

>>>sorted(list2)[-98,0,1,13,18] #原列表不改变,只是返回一个排好序的新列表

>>>list2[1,18,13,0,-98]

9. reversed(sequence)

列表的内建方法reverse()是原地翻转,而reversed()是返回一个翻转后的迭代器对象

不是返回列表,是返回一个迭代器对象

>>>list1 = [1,2,3,4]

>>>reversed(list1)

>>>for each in

reversed(list1):

print(each,end='')

4,3,2,1

10. enumerate(iterable)

生成由二元组(元素数量为二的元组)构成的一个迭代对象,每个二元组可由迭代

参数的索引号及其对应的元素组成。

>>>str1 = "FishC"

>>>for each in

enumerate(str1):

print(each)

(0,

'F')

(1,

'i')

(2, 's')

(3, 'h')

(4, 'C')

11. zip(iter1

[.iter2[...]])

返回由各个可迭代参数共同组成的元组

>>>list1 =

[1,3,5,7,9]

>>>str1 =

"FishC"

>>>for each in

zip(list1,str1) :

print(each)

(1, 'F')

(3, 'i')

(5, 's')

(7, 'h')

(9, 'C')

你可能感兴趣的:(python创建元组并输出)