【学神-RHEL7】P4-Python列表操作和字符串的常用方法
?
本節所講內容:
?
?
3.3.2?????? 分片
通過分片可以訪問序列中一定范圍內的元素。
語法:
序列[上邊界:下邊界]
>>> tag = '<ahref="http://www.python.org">Python web site</a>'
>>> tag
'<ahref="http://www.python.org">Python web site</a>'
>>> tag[32:-4]
'Python web site'
?
假如用a代表上邊界,b代表下邊界,x代表序列,則x[a:b]表示的真正的范圍應該是
a < x ≤ b??? 或??? a+1 ≤ x < b+1
注:只適用于正數分片
例:
>>> num =[1,2,3,4,5,6,7,8,9,10]
>>> num[3:6]
[4, 5, 6]
>>> num[7:8]
[8]
?
如果分片所得部分包括序列結尾的元素,只需空置最后一個索引即可
>>> num[-3:]
[8, 9, 10]
?
同樣,如果包含開始的元素,只需空置第一個索引即可
>>> num[:3]
[1, 2, 3]
?
如果要表示整個序列,兩邊都進行空置即可
>>> num[:]
[1, 2, 3, 4, 5, 6, 7, 8,9, 10]
?
例:根據用戶輸入信息打印出用戶訪問的域名
?
#!/usr/bin/env python
url = raw_input("Pleaseenter the URL: ")
domain = url[11:-4]
print "Domain name:%s"? % domain
?
執行結果
[root@localhost ~]#python domain.py
Please enter the URL:http://www.baidu.com
Domain name: baidu
?
3.3.3?????? 步長控制
分片的默認步長是1,可以手動指定為自己所需要的步長
語法
序列[上邊界:下邊界:步長]
>>> num[::2]
[1, 3, 5, 7, 9]
?
>>> num[3:9:3]
[4, 7]
?
步長可以為負數,此時分片從右到左提取元素
>>> num[9:3:-2]
[10, 8, 6]
?
3.3.4?????? 序列相加
>>> [1,2,3] +[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello' +'world'
'helloworld'
?
但是列表和字符串無法進行相加
>>> [1,2,2] +'rm'
Traceback (most recentcall last):
? File "<stdin>", line 1, in<module>
TypeError: can onlyconcatenate list (not "str") to list
?
3.3.5?????? 乘法
>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>>[2014,2015,2016] * 3
[2014, 2015, 2016, 2014,2015, 2016, 2014, 2015, 2016]
?
實例:以正確的寬度在居中的“盒子”內打印一個句子
[root@xuegod163 test]# vim ?box.py
#!/usr/bin/python
sentence=raw_input("Sentence:")
?
screen_width = 80
text_width = len(sentence)
box_width = text_width + 20
left_margin = (screen_width -box_width) // 2
left_ident = (box_width -text_width-4) // 2
?
print ' ' * left_margin +'+'? + '-' * (box_width-2) +? '+'
print ' ' * left_margin + ' '* left_ident + '| ' + ' ' * text_width???+ ' |'
print ' ' * left_margin + ' '* left_ident + '| ' +?????? sentence????? + ' |'
print ' ' * left_margin + ' '* left_ident + '| ' + ' ' * text_width???+ ' |'
print ' ' * left_margin +'+'? + '-' * (box_width-2) +? '+'
?
3.3.6?????? 成員資格
為了檢查一個值是否在序列中,可以使用in運算符
>>> provinces =['HeNan','HeBei','ShanDong','ShanXi','HuNan','HuBei','Jiangxi','Afuhan']
>>> 'AnHui' inprovinces
False
>>> 'HeNan' inprovinces
True
?
3.3.7?????? 長度、最大值、最小值
長度:len
最大值:max
最小值:min
>>> len('What is yourname?')
18
>>> num =[100,200,300,250]
>>> len(num)
4
>>> max(num)
300
>>> min(num)
100
?
3.4????????? 列表的基本操作
3.4.1?????? 元素賦值
>>> x = [1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]
?
3.4.2?????? 刪除元素
>>> provinces
['HeNan', 'HeBei', 'ShanDong','ShanXi', 'HuNan', 'HuBei', 'Jiangxi', 'Afuhan']
>>> del provinces[-1]
>>> provinces
['HeNan', 'HeBei', 'ShanDong','ShanXi', 'HuNan', 'HuBei', 'Jiangxi']
?
3.4.3?????? 分片賦值
>>> num = [1,2,3,4,5]
>>> num[3:] = [6,7]
>>> num
[1, 2, 3, 6, 7]
?
插入新元素
>>> num[3:3] =[4,5]
>>> num
[1, 2, 3, 4, 5, 6, 7]
?
分片刪除
>>> del num[1:4]
或
>>> num[1:4] =[]
>>> num
[1, 5, 6, 7]
?
3.4.4?????? 列表的方法
1)追加append
>>> num =[1,2,3]
>>>num.append(4)
>>> num
[1, 2, 3, 4]
?
2)統計次數count
>>>['to','be','or','not','to','be'].count('to')
2
?
3)在列表末尾一次性追加另一個列表的多個值extend
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b[1:3])
>>> a
[1, 2, 3, 5, 6]
?
4)顯示列表中某個值第一個匹配項的索引位置index
>>> aaa =['Today','is','a','nice','day']
>>> aaa.index('nice')
3
?
5)將對象插入到列表中insert
>>> num =[1,2,3,4,5,6]
>>>num.insert(3,'four')
>>> num
[1, 2, 3, 'four', 4, 5, 6]
?
6)移除列表中的一個元素(默認是最后一個),并且返回該元素的值
>>> x = [1,2,3]
>>> x.pop()
3
?
7)移除列表中某個值的第一個匹配項remove
>>> x =? ['to','be','or','not','to','be']
>>>x.remove('be')
?
8)將列表中的元素反向存放reverse
>>> x
['to', 'or', 'not', 'to','be']
>>> x.reverse()
>>> x
['be', 'to', 'not', 'or','to']
?
9)排序sort和sorted
>>> x =[3,7,4,64,23,71,2]
>>> x.sort()
>>> x
[2, 3, 4, 7, 23, 64, 71]
?
>>> sorted(x)
[2, 3, 4, 7, 23, 64, 71]
?
兩者的區別在于sort不返回生成的列表值,sorted返回列表值
?
3.5????????? 元組
元組也列表一樣,也是一種序列。唯一的不同是元組不能修改。
語法
(元素1,元素2,……,元素n)
?
空元組可以用沒有包含內容的兩個圓括號來表示
()
?
如果要創建包括一個值的元組,必須加上逗號
(42,)
?
加上逗號和不加逗號代表的含義完全不同
?
>>> 3*(42)
126
>>> 3*(42,)
(42, 42, 42)
?
?
補充1:
格式化字符串的使用方法:
1)%字符:標記轉換說明符的開始
2)轉換標志(可選):
標志 | 含義 |
- | 左對齊 |
+ | 轉換值之前加上正負號 |
“” | 空白字符 |
0 | 轉換值若位數不夠則用0填充 |
3)最小字段寬度(可選):轉換后的字符串至少應該具有該值指定的寬度。如果是*,則寬度會從值元組中讀出
4)點(.)后跟精度值(可選):如果轉換的是實數,精度值就表示出現在小數點后的位數。如果是字符串,那么該數字就表示最大字段寬度。如果是*,那么精度將會從元組中讀出。
5)轉換類型
常見類型表
轉換類型 | 含義 |
d | 轉換10進制的數字 |
f | 十進制浮點數 |
r | 字符串(使用repr轉換任意python對象) |
s | 字符串(使用str轉換任意python對象) |
?
例1:簡單轉換
>>> name = '孫悟空'
>>> print '齊天大圣%s' % name
齊天大圣孫悟空
?
例2:控制字段寬度
>>> print '%30s孫悟空' % name
????????????????? 齊天大圣孫悟空
?
例3:控制字段精度
針對數字指定小數位數
>>> from mathimport pi
>>> pi
3.141592653589793
>>> print '%.2f'% pi
3.14
針對字符確定最大寬度
>>> name = 'What is your name'
>>> print '%s' % name
What is your name
>>> print '%.10s' % name
What is yo
?
例3:使用*表示字段的寬度和精度
>>> print '%s' %name
What is your name
>>> print'%*.*s' % (20,10,name)
????????? What is yo
?
例4:左對齊
>>> print'%-*s%*s' % (30,'Goods',30,'Prices')
Goods????????????????????????????????????????????????Prices
?
補充2:
常見字符串的方法
1)find
find 方法可以在一個較長的字符串中查找子串。它返回子串所在位置的最左端索引,如果沒有找到則返回-1
>>> title ='welcome to hero alliance'
>>>title.find('hero')
11
>>>title.find('heros')
-1
?
2)lower
lower用來將字符串轉換為小寫格式(可以在腳本中設置忽略大小寫的操作)
>>> name='SunWUKOng'
>>> name.lower()
'sunwukong'
?
3)title
title用來將字符串轉換為標題,每個單詞的首字母大寫,其他字母小寫
>>>title.title()
'Welcome To HeroAlliance'
?
title處理以下結果是達不到想要效果
>>> hero ="I'm rm"
>>> hero.title()
"I'M Rm"
?
可以使用插入string模塊,使用capwords函數
>>> string.capwords(hero)
"I'm Rm"???
?
4)replace
replace對字符串進行替換,并返回替換后的結果
>>> title
'welcome to heroalliance'
>>>title.replace('alliance','kingdom')
'welcome to hero kingdom'
?
5)split
split用來將字符串分割成序列,默認以空格作為分隔符,可以手動指定
>>> title.split()
['welcome', 'to', 'hero', 'alliance']
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
?
6)strip
strip刪除字符串兩側的空格(不包含內部空格),并返回結果
>>> name = raw_input("What is yourname? ").strip()
What is your name???? rm
>>> name
'rm'
?
如果希望創建一個不區分大小寫,而且自動去除用戶誤輸入的空格字符的變量,可以通過strip和lower相互結合使用
>>> name = raw_input('What is your name?').strip().lower()
What is your name????? RM
>>> name
'rm'
?
?
?
學習過程中如果問題,請留言。更多內容請加:
學神IT-linux講師-RM老師QQ:2805537762
學神IT-戚老師QQ:3341251313
學神IT-旭斌QQ:372469347
學神IT教育RHEL7交流群:468845589
?
?
?
?
?
轉載于:https://blog.51cto.com/xuegodlinux/1734387
總結
以上是生活随笔為你收集整理的【学神-RHEL7】P4-Python列表操作和字符串的常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构学习笔记(2)
- 下一篇: Echarts使用笔记