String的补充和列表的常见操作


(12)字符串分割变换

  • join()将指定字符插入到元素之间。
  • split()以指定字符分隔序列且去除该字符
  • partition()以指定字符分隔序列且包含该字符
#join
>>> str="learn string"
>>> "-".join(str)
'l-e-a-r-n- -s-t-r-i-n-g'
>>> li=["learn","string"]
>>> "-".join(li)
>>> str.split("n")
['lear', ' stri', 'g']

#split
>>> str.split("n",1)
['lear', ' string']
>>> str.splitlines()
['learn string']

#partition
>>> str.partition("n")
('lear', 'n', ' string')
>>> str.rpartition("n")
('learn stri', 'n', 'g')
>>>

补充:

string模块
string模块中的capwords()函数功能:

  • 1.将每个单词首字母置为大写
  • 2.将每个单词除首字母外的字母均置为小写;
  • 3.将词与词之间的多个空格用一个空格代替
  • 4.其拥有两个参数,第二个参数用以判断单词之间的分割符,默认为空格。
>>> import string
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>>

"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。

下面整理了一下Python中字符串格式化符合:

格式化符号说明
%c转换成字符(ASCII 码值,或者长度为一的字符串)
%r优先用repr()函数进行字符串转换
%s优先用str()函数进行字符串转换
%d / %i转成有符号十进制数
%u转成无符号十进制数
%o转成无符号八进制数
%x / %X转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)
%e / %E转成科学计数法(e / E控制输出e / E)
%f / %F转成浮点数(小数部分自然截断)
%g / %G%e和%f / %E和%F 的简写
%%输出% (格式化字符串里面包括百分号,那么必须使用%%)

这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。

看个简单的代码:

a=15
print(("%d to hex is %x")%(a,a))
#结果:15 to hex is f
>>> "%f" % 15
#结果:'15.000000'
>>> "%e" % 15000
#结果:'1.500000e+04'
>>> "%d" % 100
#结果:'100'
>>> "%d%%" %100
#结果:'100%'
>>>

你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦。

name=input("Name:")
age=input("Age:")
job=input("Job:")
hobbie=input("Hobbie:")

info ='''
---info of %s---
Name :\t %s
Age  :\t %s
Job  :\t %s
Hobbie  :\t %s
-------end------
'''%(name,name,age,job,hobbie)
print(info)
#输入:
#Name:rita
#Age:18
#Job:1234
#Hobbie:13435

#结果:
#---info of rita---
#Name :	 rita
#Age  :	 18
#Job  :	 1234
#Hobbie  :	 13435
-------end------
>>> 


列表

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

特点: 是一个有序的,可以重复的序列,可变类型。

1.创建一个空列表

>>> list1=[]
>>> print(type(list1))
<class 'list'>
>>>

2.创建一个有多个值的列表,每个值用逗号隔开

list2=[12,3,4,56,57,56]

3.列表也可以存放不同类型的元素

list3=[18,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]

4.列表的拼接

list3 + list

5.列表的重复

list * 3

6.列表索引和切片

>>> list3=[12,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]
>>> len(list3)
#结果:5
>>> list3[0]
#结果:12
>>> list3[3]
#结果:(66, 67)
>>> list3[-1]
#结果:{'name': 'Tom', 'age': 18}
>>> list3[3:]
#结果:[(66, 67), {'name': 'Tom', 'age': 18}]
>>> list3[0::2]
#结果:[12, [1, 2, 3], {'name': 'Tom', 'age': 18}]
>>>

列表的常见操作

列表:

names = ['a','b','c']

1.增加

append(),extend(),insert()

  • 1)append(),增加到最后
>>> names=['a','s','f']
>>> names.append("r")
>>> print(names)
['a', 's', 'f', 'r']
  • 2)extend(),迭代的去增加
>>> name=["&&","a","f","t","devier"]
>>> place=["bejing","shanghai","use"]
>>> name.extend(place)
>>> print(name)
['&&', 'a', 'f', 't', 'devier', 'bejing', 'shanghai', 'use']
>>>
  • 3)insert(),按照索引去增加
>>> name=["&&","a","f","t","devier"]
>>> name.insert(2,"devilf")
>>> print(name)
['&&', 'a', 'devilf', 'f', 't', 'devier', 'bejing', 'shanghai', 'use']
>>>
  • 4)其他的插入方式
>>> name=["&&","a","f","t","devier"]
>>> names[3]="lebon"
>>> print(names)
['&&', 'a', 'devilf', 'lebon', 't', 'devier', 'bejing', 'shanghai', 'use']

2.删除

pop,remove,del,clear

  • 1)pop()
>>> names=['a','b','c','d','e']
>>> names.pop()
'e'
>>> names
['a', 'b', 'c', 'd']
>>> names.pop(2)
'c'
>>> names
['a', 'b','d']
>>>
  • 2)del()
>>> names=['a','b','c','d','e','f','e']
>>> del names[4]
>>> names
['a', 'b', 'c', 'd', 'f', 'e']
>>>
  • 3)remove()
>>> names=['a','b','c','d','e','f','e']
>>> names.remove('e')
>>> names
['a', 'b', 'c', 'd', 'f', 'e']
  • 4)clear()
>>> names=['a','b','c','d','e','f','e']
>>> names.clear()
>>> names
[]

3.改

>>> li=['a','b','c','d']
>>> li[1]='cc'
>>> li
['a', 'cc', 'c', 'd']
>>> ['a','b','c','d']
['a', 'b', 'c', 'd']
>>> li[0:2]=['aa','bb']
>>> li
['aa', 'bb', 'c', 'd']
>>>

4.查

切片去查,或者,循环去查

  • 索引、切片、遍历

其他操作:

1.查找元素所在位置:index()

>>> names=['a','b','c','d','e']
>>> names.index('c')
2

2.统计元素的次数:count()

>>> names=['a','b','c','d','e']
>>> names.append('d')
>>> names.count('d')
2
>>>

3.反转:reverse()

>>> names=['a','b','c','d','e']
>>> names.reverse()
>>> names
['e', 'd', 'c', 'b', 'a']
>>>

4.排序:sort()按照ascii码来进行排序

>>> names=['a','b','c','d','e']
>>> names.insert(3,'&&')
>>> names
['a', 'b', 'c', '&&', 'd', 'e']
>>> names.sort()
>>> names
['&&', 'a', 'b', 'c', 'd', 'e']
>>> names.sort(reverse=True)
>>> names
['e', 'd', 'c', 'b', 'a', '&&']
>>>

5.对列表进行切片处理

  • 1)列表所有的元素
>>> names=['a','b','c','d','e']
>>> names[::]
['a', 'b', 'c', 'd', 'e']
>>>
  • 2)列出最后一个元素,从中间位置开始,列出后面所有的元素
>>> names=['a','b','c','d','e']
>>> names[-1]
'e'
>>>
names=['a','b','c','d','e']
>>> a=int(len(names)/2)
>>> names[a:]
['c', 'd', 'e']
>>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值