访次: AmazingCounters.com 次

六、字符串格式化--------列表常用操作

  • 移除空白  strip
  • 分割    split
  • 长度    len(xxx)
  • 索引    obj[1]
  • 切片    obj[1:]   obj[1:10]  obj[-1:]

 

字符串格式化

  • 问年龄
  • 问性别
  • 问工作
  • 问完之后统一打印出一个格式化的形式
 1 # -*- coding:utf-8 -*-
 2 name = input("name:")
 3 age = input("age:")
 4 job = input("job:")
 5 #此处看着特别迷糊,可以考虑其他办法
 6 #此种写法为拼接形式,每添加一个字符串都会在内存里单独开辟一个空间,相当于创建一个新的变量
 7 print("Infomation of :" +name+ "\nName:" +name+ "\nAge:" +age+ "\nJob:"+job)
 8 #此种写法在内存中一共只有一个空间,正常来说不建议通过拼接的形式来做
 9 print("Information of %s:\nName:%s\nAge:%s\nJob:%s" %(name,name,age,job))
10 #以上两种打印方式全部写在一行里如果数据量较大操作起来比较乱
11 #Python中单引号与双引号没有区别
12 #第三种方法
13 asg = '''
14 Infomation of %s:
15 Name:%s
16 age:%s
17 job:%s
18 ''' %(name,name,age,job)
19 print(asg)
20 
21 注意:python中的+号,数字只能加数字,字符串智能加字符串
22 print("Infomation of :" +name+ "\nName:" +name+ "\nAge:" +age+ "\nJob:"+job)

看以下错误:

 

  • python中的+号,数字只能加数字,字符串智能加字符串
  • age已经是数字了就不能通过加号的形式跟字符串相加了
  • 数字只能加数字
  • 字符串只能加字符串

 

 

 1 # -*- coding:utf-8 -*-
 2 name = input("name:")
 3 age = int(input("age:"))
 4 job = input("job:")
 5 print("Infomation of :" +name+ "\nName:" +name+ "\nAge:" +age+ "\nJob:"+job)
 6 --------------------------------------------------------------------------------
 7 name:aa
 8 age:33
 9 job:aa
10 Traceback (most recent call last):
11   File "F:/python/day1/字符串格式化.py", line 8, in <module>
12     print("Infomation of :" +name+ "\nName:" +name+ "\nAge:" +age+ "\nJob:"+job)
13 TypeError: Can't convert 'int' object to str implicitly

 

 

 

 

# 字符串是 %s;整数 %d;浮点数%f

 

 1 asg = '''
 2 Infomation of %s:
 3 Name:%s
 4 age:%d
 5 job:%s
 6 ''' %(name,name,age,job)
 7 print(asg)
 8 ------------------------------------------------------------------------------------
 9 name:aa
10 2age:2
11 job:dd
12 Traceback (most recent call last):
13   File "F:/python/day1/字符串格式化.py", line 19, in <module>
14     ''' %(name,name,age,job)
15 TypeError: %d format: a number is required, not str
16 
17 Process finished with exit code 1

 

错误中提到需要number 但是你却给了一个不是字符串

在这种情况下可以这样写

 1 # -*- coding:utf-8 -*-
 2 name = input("name:")
 3 age = int(input("age:"))
 4 job = input("job:")
 5 asg = '''
 6 Infomation of %s:
 7 Name:%s
 8 age:%d
 9 job:%s
10 ''' %(name,name,age,job)
11 print(asg)
12 ------------------------------------------------------------------------------------
13 name:aa
14 age:21
15 job:dd
16 
17 Infomation of aa:
18 Name:aa
19 age:21
20 job:dd
  •  移除空白 xxx.strip()
 1 # -*- coding:utf-8 -*-
 2 name = input("name:")
 3 age = int(input("age:"))
 4 job = input("job:")
 5 asg = '''
 6 Infomation of %s:
 7 Name:%s
 8 age:%d
 9 job:%s
10 ''' %(name,name,age,job)
11 print(asg)
12 -----------------------------------------------------
13 输入:
14 name:                 aa
15 age:21
16 job:              ff
17 #打印
18 Infomation of                  aa:
19 Name:                 aa
20 age:21
21 job:              ff

 

看到上面 添加空格后 输出就乱了
现在就需要把空格去掉了

  • 现在开始对字符串操作,可以用 .strip() 意思是去掉的意思
 1 # -*- coding:utf-8 -*-
 2 name = input("name:").strip()
 3 age = int(input("age:"))
 4 job = input("job:").strip()
 5 asg = '''
 6 Infomation of %s:
 7 Name:%s
 8 age:%d
 9 job:%s
10 ''' %(name,name,age,job)
11 print(asg)
12 --------------------------------------------------------------------------------
13 输入;
14 name:                        dddddd
15 age:21
16 job:         ff
17 打印:
18 Infomation of dddddd:
19 Name:dddddd
20 age:21
21 job:ff

 

  • strip() 可以指定去除内容,只能去除开头或者结尾的内容,中间的不会被去除,看下面的实验
 1 # -*- coding:utf-8 -*-
 2 name = input("name:").strip('aa')
 3 age = int(input("age:"))
 4 job = input("job:").strip('bb')
 5 asg = '''
 6 Infomation of %s:
 7 Name:%s
 8 age:%d
 9 job:%s
10 ''' %(name,name,age,job)
11 print(asg)
12 --------------------------------------------------------------------------------
13 输入:
14 name:aa
15 age:12
16 job:bbxx
17 打印:
18 Infomation of :
19 Name:
20 age:12
21 job:xx

 

name_list = ['aa','bb','cc']

  • 列表的好处是可以存储多个信息以前的变量存储量是有限的
  • 列表个变量里可以存储多个信息
  • 列表内的内容成为元素
  • 列表的索引值以0为起始值

取一个值
name_list[0]

  • 可以通过 dir(name_list)来查看可以操作的私有方法

只有:

append:追加

1 name_list.append("999")

count:统计

通过count可以统计出name_list中一共存在几个 aaa999,下面实验中统计出一共有3个 aaa999

 1 name_list.count("aaa999") 

extends:扩展

index:索引

索引值只能找到第一个

分别从 0为起始值 第一个aaa999排在第6个

 1 name_lsit.index("aaa9999") 

insert:插入

下面实验是讲在 第6个位置插入bbb9999

 1 name_lsit.insert(6,"bbb999") 

pop:删除一个

默认删除列表的最后一个

 1 name_list.pop() 

remove:删除指定一个

删除一个指定的值 aaa999

 1 name_list.remove("aaa9999") 

通过循环的方式remove删除

1 for i in range(name_list.count('9999'))
2     name_list.remove('9999')

reverse:反转

 1 name_list.reverse() 

sort:排序

按照阿斯克玛排序

 1 name_list.sort() 

------------------------------------------------------------------------------------

切片:

首先创建一个列表

 1 #创建一个列表
 2 name_list = [1,2,3,4,'a','b','c']
 3 #对这个name_lsit列表排序
 4 name_list.sort()
 5 #打印列表
 6 print(name_list)
 7 ------------------------------------------------------------------------------------
 8 #提示
 9 Traceback (most recent call last):
10   File "F:/python/day1/切片.py", line 3, in <module>
11     name_list.sort()
12 TypeError: unorderable types: str() < int()
13 ------------------------------------------------------------------------------------
14 #提示不能排序str()str是字符,int()是数字
15 #意思是说在列表里字符和数字在一起了所以不能排序

下面把 [1,2,3,4,'a','b','c'] 分成两部分变成 [1,2,3,4]----------['a','b','c']

1 name_list = [1,2,3,4,'a','b','c']
2 print(name_list[:4])
3 -----------------------------------------------------------------------------------
4 输出结果:
5 [1, 2, 3, 4]

 

 1 __author__ = 'Administrator'
 2 # -*- coding:utf-8 -*-
 3 name_list = [1,2,3,4,'a','b','c']
 4 #name_list.sort()
 5 #打印name_lsit从索引起始位置0开始到索引位置4结束
 6 print(name_list[0:4])
 7 #打印name_list 4开始到7结束
 8 print(name_list[4:7])
 9 #从中间开始切片,从索引其实卫视2开始到索引位置5结束
10 print(name_list[2:5])
11 #Python在切片这里看到name_list[0:4],name_list[4:7]索引位置两次被引用,可发现python切片的特点是顾首不顾尾
12 
13 
14 #跳着切片,从起始索引位置0开始到索引位置5结束,每隔两个切一次
15 print(name_list[0:5:2])
16 #------------------------------------------------------------------------------------
17 #输出
18 #从索引起始位置切分
19 [1, 2, 3, 4]
20 #从索引中间位置到索引结尾位置开始切分
21 ['a', 'b', 'c']
22 #从索引中间位置到索引中间位置结束
23 [3, 4, 'a']
24 #跳着切片
25 [1, 3, 'a']

下面倒着切片:

 

1 __author__ = 'Administrator'
2 name_list = [1,2,3,4,5,'a','b',]
3 #取倒数最后一位
4 print(name_list[-1])
5 #取倒数两位
6 print(name_list[-2:])
7 #取前三个
8 print(name_list[:3])

下面在看一下个排序

 1 __author__ = 'Administrator'
 2 name_list = [1,2,3,4,5,'a','b',]
 3 
 4 
 5 name_list.sort()
 6 print(name_list)
 7 ------------------------------------------------------------------------------------
 8 #输出
 9 Traceback (most recent call last):
10   File "E:/python/day1/下/day1/切片.py", line 5, in <module>
11     name_list.sort()
12 TypeError: unorderable types: str() < int()
13 #在3.0里 字符串和列表不能放在一起进行排序

 下面看一下 extend

extend 是列表合并

 1 方法一:
 2 __author__ = 'Administrator'
 3 name_list = [1,2,3,4,5,'a','b',]
 4 name_list2 = ['q','w','e','r',]
 5 
 6 Gg = name_list + name_list2
 7 print(Gg)
 8 ------------------------------------------------------------------------------------
 9 #输出:
10 [1, 2, 3, 4, 5, 'a', 'b', 'q', 'w', 'e', 'r']
11 
12 ------------------------------------------------------------------------------------
13 方法二:
14 __author__ = 'Administrator'
15 name_list = [1,2,3,4,5,'a','b',]
16 name_list2 = ['q','w','e','r',]
17 name_list.extend(name_list2)
18 print(name_list)
19 ------------------------------------------------------------------------------------
20 #输出:
21 [1, 2, 3, 4, 5, 'a', 'b', 'q', 'w', 'e', 'r']

 

posted @ 2016-01-07 23:02  IT老登  阅读(655)  评论(0编辑  收藏  举报
访次: AmazingCounters.com 次