这种叫字符串格式化
Tagged Tags:

 开始了,继续说!字符串替换,就是预留着空间,后边再定义要填上什么,这种叫字符串格式化,其有两种方法:
%    和 format

%s  就是一个占位符,这个占位符可以被其它的字符串代替

>>> “I like
%s” % “python”

‘I like
python’

占位符 说明
%s 字符串(采用str()的显示)
%r 字符串(采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)

string.format()的格式化方法,其中{索引值}作为占位符,这个好变着花样的玩哦,这个不错,嘻嘻

>>> s1 = “I
like {0}”.format(“python”)

>>> s1

‘I like python’

关于类似的操作,还有很多变化,比如输出格式要宽度是多少等等,找了一个参考图,你看看开心就好

图片 1

split   这个函数的作用是将字符串根据某个分割符进行分割

>>> a = “I
LOVE PYTHON”

>>> a.split(” “)

[‘I’, ‘LOVE’, ‘PYTHON’]        
       
 (这是用空格作为分割,得到了一个名字叫做列表(list)的返回值)

>>> b = “www.itdiffer.com”

>>> b.split(“.”)

[‘www’, ‘itdiffer’, ‘com’]      
         
  (这是用”.”作为分割,得到了一个名字叫做列表(list)的返回值)

String.strip() 去掉字符串的左右空格

String.lstrip() 去掉字符串的左边空格

String.rstrip() 去掉字符串的右边空格

String.upper() #String中的字母大写

String.lower() #String中的字母小写

String.capitalize() #首字母大写

String.isupper() #String中的字母是否全是大写

String.islower() #String中的字母是否全是小写

String.istitle()
#String中字符串中所有的单词拼写首字母是否为大写,且其他字母为小写

join拼接字符串

>>> b=’www.itdiffer.com’

>>> c = b.split(“.”)

>>> c

[‘www’, ‘itdiffer’, ‘com’]

>>> “.”.join(c)

‘www.itdiffer.com’

>>> “*”.join(c)

‘www*itdiffer*com’ 

列表

一些用逗号分隔而有序的数据,用方括号表示一个list,[
] 在方括号里面,可以是int,也可以是str类型的数据,甚至也能够是True/False这种布尔值 [‘2′,3,’北京图灵’,’outman’]

bool()是一个布尔函数,这个东西后面会详述。它的作用就是来判断一个对象是“真”还是“空”(假)

列表可以索引和切片,前面字符串我好像啰嗦过了,都是一样的

这里拓展下
双冒号使用,其实Python序列切片地址可以写为[开始:结束:步长],那么其中的开始和结束省略,就出现双冒号了

开始start省略时,默认从第0项开始。结尾省略的时候,默认到数组最后。步长step省略默认为1。当step等于负数的时候,从右向左取数

>>> alst = [1,2,3,4,5,6]

>>> alst[::-1]       #从右向左取数(反转过来了)

[6,5,4,3,2,1]

上面反转我们可以用reversed函数 

>>> list(reversed(alst))

[6,5,4,3,2,1]

这种叫字符串格式化。好了下面我转用anaconda 里面的 jupyter打命令演示了(之前是在官方python3.7)没有 >>> 

“append()方法在列表的末尾添加一个元素   

s = [1,’a’,’3′]
s.append(‘t’)
print(s)

[1, ‘a’, ‘3’, ‘t’]

insert()任意位插入一个元素 (说到位置,你想到什么?没错,就是索引)

s = [1,’a’,’3′]
s.insert(3,’t’)       #在索引为3的位置加字符t,也就是字符串3后边
print(s)

[1, ‘a’, ‘3’, ‘t’]

这种叫字符串格式化。使用del语句删除元素

motorcycles = [‘honda’, ‘yamaha’, ‘suzuki’]
del motorcycles[0]
print(motorcycles)
[‘yamaha’, ‘suzuki’]

这种叫字符串格式化。pop()弹出任意位置一个元素     
 (同样说位置,还是用索引,弹出?就是拿出来)

motorcycles = [‘honda’, ‘yamaha’, ‘suzuki’]
motorcycles.pop(1)     
 #括号内不填写默认为0,经常弹出的这个值我们会用到,这就是特殊的地方
print(motorcycles)
[‘honda’, ‘suzuki’]

remove()不知道要从列表中删除的值所处的位置,只知道要删除的元素的值。(知道你要删除啊啥,这就够了)

motorcycles = [‘honda’, ‘yamaha’, ‘suzuki’, ‘ducati’]
这种叫字符串格式化。motorcycles.remove(‘ducati’)
这种叫字符串格式化。print(motorcycles)
[这种叫字符串格式化。’honda’, ‘yamaha’, ‘suzuki’]

好了,再说几个,不做命令演示了

list.clear()   
从列表中删除所有元素。相当于 del a[:]

list.index(x)   返回列表中第一个值为 x
的元素的索引。如果没有匹配的元素就会返回一个错误

list.count(x)    返回 x 在列表中出现的次数

list.sort()    对列表中的元素就地进行排序

list.reverse()    就地倒排列表中的元素

list.copy()    返回列表的一个浅拷贝。等同于 a[:]     
说说这个吧,你可能会问啥是浅拷贝?演示代码给你看下,你会发现确实新拷贝的列表ID不一样,但里面元素ID一样

b = [‘honda’, ‘yamaha’, ‘suzuki’]
a = b.copy()
print(id(b))           #查看列表b的ID
print(id(b[1]))       #查看列表b中索引值为1的元素ID
print(a)
print(id(a))           #查看列表a的ID
print(id(a[1]))       #查看列表a中索引值为1的元素ID
99833224
99844368
[‘honda’, ‘yamaha’, ‘suzuki’]
105157704
99844368

list.extend(b)     
将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = b 这个理解么?就是说列表a其切片从索引值”len(a)”到结束的部分就是列表b
a = [1, 2, 3]
b = [‘qiwsir’, ‘python’]
a.extend(b)
print(a)
[1, 2, 3, ‘qiwsir’, ‘python’]           
      
 这里你想下和append()的区别

 

说到这,就不得不深入下,extend函数也是将另外的元素增加到一个已知列表中,其元素必须是iterable,什么是iterable?也就是可迭代

迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果

hasattr()的判断本质就是看那个类型中是否有__iter__函数。可以用dir()找一找,在数字、字符串、列表、元组、集合、字典,谁有__iter__(截图了,打命令好累)

图片 2为什么?数字你搞什么!

那我们想下,列表都干啥用呢?

1. 把列表当作堆栈使用

列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来

2. 把列表当作队列使用

可以把列表当做队列使用,队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢(因为,为了一个元素,要移动整个列表中的所有元素)

3. 列表推导式(可嵌套)

列表推导式为从序列中创建列表提供了一个简单的方法。普通的应用程式通过将一些操作应用于序列的每个成员并通过返回的元素创建列表,或通过满足特定条件的元素创建子序列

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注