python基礎10 字符串操作,字典操作,集合操作
本節內容:
- 字符串操作
- 字典操作
- 集合操作
字符串操作
概述
字符串是以‘‘或""括起來的任意文本,比如‘abc‘,"xyz"等等。請註意,‘‘或""本身只是一種表示方式,不是字符串的一部分,因此,字符串‘abc‘只有a,b,c這3個字符。
如果字符串本身包含‘怎麽辦?比如我們要表示字符串 I‘m OK ,這時,可以用" "括起來表示:
"I‘m OK"
類似的,如果字符串包含",我們就可以用‘ ‘括起來表示:
‘Start to learn "Python" ‘
如果字符串既包含‘又包含"怎麽辦?
這個時候,就需要對字符串的某些特殊字符進行“轉義”,Python字符串用\進行轉義。
要表示字符串 Bob said "I‘m OK". 由於 ‘ 和 " 會引起歧義,因此,我們在它前面插入一個\表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為
‘Bob said \"I\‘m OK\".‘
註意:轉義字符 \ 不計入字符串的內容中。
常用的轉義字符還有:
- \n 表示換行
- \t 表示一個制表符
- \ 表示 \ 字符本身
常用操作
首字母大寫capitalize()
name = "my name is cathy wu"
print(name.capitalize())
結果是:
My name is cathy wu
統計 count()
name = "my name is cathy wu"
print(name.count("a"))
結果是:
2
center()
將打印的放中間,不夠50字符的用-補充.
name = "my name is cathy wu"
print(name.center(50,"-"))
結果是:
---------------my name is cathy wu----------------
endswith()和startswith()
endswith()判斷字符串以什麽結果,比如判斷郵件是否以.com結尾。startswith()判斷字符串以什麽開頭。
name = "my name is cathy wu"
print(name.endswith("wu"))
print(name.startswith("name"))
結果是:
True
False
expandtabs()
將tab鍵轉換成多少個空格
name = "my name \tis cathy wu"
print(name.expandtabs(tabsize=30))
結果是:
my name is cathy wu
find()
查找字符比如y的索引
name = "my name is cathy wu"
print(name.find("y"))
結果是:
1
name = "my name is cathy wu"
print(name.find("name"))
結果是:
3
name = "my name is cathy wu"
print(name[name.find("name"):])
結果是:
name is cathy wu
format
格式化輸入:
name = "my name is {name} and I m {age}"
print(name.format(name="cathy",age=30))
結果是:
my name is cathy and I m 30
format_map
數據字典格式,很少用。
name = "my name is {name} and I m {age}"
print(name.format_map({"name":"cathywu","age":30}))
結果是:
my name is cathywu and I m 30
isalnum()
判斷輸入的所有字符都是字母數字,則返回true。 在輸入的所有字符中至少有一個字符,否則為false。
print("ABC123".isalnum())
print("".isalnum())
print("a@".isalnum())
結果是:
True
False
False
isdecimal()
判斷是否10進制
print("1".isdecimal())
結果是:
True
isdigit()
print("1A".isdigit())
結果是:
False
isidentifier()
判斷是不是一個合法的標識符,是不是一個合法的變。
print("1A".isidentifier())
結果是:
False
islower()
判斷是否小寫
print("1A".islower()) 結果是:
False
print("abc".islower())
結果是:
True
isspace()
判斷是否為空格。
print("abc".isspace())
結果為
False
istitle()
判斷字符串是不是一個titlecased字符串
print("My Name Is".istitle())
print("My name Is".istitle())
結果是
True
False
isprintable()
判斷是否可以打印
print("My name Is".isprintable()) 結果是
True
join()
將列表連接成字符串
print("+".join(["1","2","3","4"]))
結果是
1+2+3+4
ljust()
保證長度如50,不夠用*補上
name = "my name is cathy wu"
print(name.ljust(50,‘*‘))
結果是
my name is cathy wu*******************************
rjust()
保證長度如50,不夠用*補上
name = "my name is cathy wu"
print(name.rjust(50,‘*‘))
結果是
*******************************my name is cathy wu
lower()
將輸入的變成小寫。
print(‘CATHY‘.lower())
結果是
cathy
upper()
小寫變大寫
print(‘Cathy‘.upper()) 結果是
CATHY
lstrip()
從左邊去掉空格
print(‘\n Cathy‘)
print(‘\nCathy‘.lstrip())
結果是
Cathy
Cathy
maketrans()
用於創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。可以用於隨機密碼。 註:兩個字符串的長度必須相同,為一一對應的關系 在Cathy裏面按照abcdef對應找到123456。
p = str.maketrans(‘abcdef‘,‘123456‘) print("cathy".translate(p))
結果是
31thy
replace()
字符替換。 如:將小寫的c換成大寫的C。
print(‘cathy‘.replace(‘c‘,‘C‘,1))
結果是
Cathy
rfind()
找到對應值的下標最大值。
print(‘CathyCathy‘.rfind("a")) print(‘CathyCathyCathy‘.rfind("a"))
結果為
6
11
split()
按照制定的分割成列表,如按空格分.
print(‘cahty wu 33 it‘.split())
print(‘1cahtywu2cahtywu3cahtywu‘.split(‘u‘))
結果為:
[‘cahty‘, ‘wu‘, ‘33‘, ‘it‘]
[‘1cahtyw‘, ‘2cahtyw‘, ‘3cahtyw‘, ‘‘]
print(‘1+2\n+3+4‘.split(‘\n‘))
print(‘1+2\n+3+4‘.splitlines())
結果為:
[‘1+2‘, ‘+3+4‘]
[‘1+2‘, ‘+3+4‘]
swapcase()
將輸入的值大寫換成小寫,小寫換成大寫拷貝作為一個副本。
print(‘CathyCathy‘.swapcase())
結果為:
cATHYcATHY
zfill()
從左邊的零填充數字字符串,以填充到字段 指定寬度的。字符串不會被截斷。
print(‘cathywu‘.zfill(50))
結果為:
0000000000000000000000000000000000000000000cathywu
字典操作
概述
字典dict也是集合,是無序的。花括號 {} 表示這是一個dict,然後按照 key: value, 寫出來即可。最後一個 key: value 的逗號可以省略。
常用操作
增加
info = { ‘stu1701‘:‘jack‘, ‘stu1702‘:‘rose‘, ‘stu1703‘:‘lucy‘, }
修改
info[‘stu1701‘] = ‘mike‘
刪除
- 方法一 必須填寫參數,如果key不存在,會報錯。 如果key存在則刪除。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
del info[‘stu1707‘]
顯示結果:
del info[‘stu1707‘]
KeyError: ‘stu1707‘
- 方法二 必須填寫參數。 如果key存在則刪除。 ```
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
del info[‘stu1701‘]
print(info)
顯示結果:
{‘stu1702‘: ‘rose‘, ‘stu1703‘: ‘lucy‘}
- 方法三 參數不用填寫,隨機刪除一個。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
info.popitem()
print(info)
結果是:
{‘stu1702‘: ‘rose‘, ‘stu1703‘: ‘lucy‘}
4.方法四 pop()
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
info.pop(‘stu1701‘)
print(info)
結果是:
{‘stu1703‘: ‘lucy‘, ‘stu1702‘: ‘rose‘}
查找
- 方法一
確定知道key才用這種法查找,如果查找的key 不存在,則會報錯。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info[‘stu1705‘])
結果是
print(info[‘stu1705‘])
KeyError: ‘stu1705‘
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info[‘stu1702‘])
結果是:
rose
- 方法二 如果key不存在,返回none,如果存在返回這個key的value。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info.get(‘stu1705‘))
print(info.get(‘stu1703‘))
結果是:
None
lucy
- 返回是否存在於字典中。 如果存在 則返回true 如果不存在返回false。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(‘stu1704‘ in info)
print(‘stu1701‘ in info)
結果是
False
True
註意: 這種方法只在python3裏面, pyhon2 裏面是info.has_key(‘stu1704‘)
嵌套
多級字典嵌套及操作 future = { ‘商品期貨‘:{ "農產品期貨":[‘大豆‘,‘小麥‘,‘玉米‘], "金屬期貨":[‘銅‘,‘鋁‘,‘鉛‘], "能源期貨":[‘原油‘,‘汽油‘,‘燃料油‘] }, ‘金融期貨‘:{ "股指期貨":[‘香港恒生指數‘,‘滬深300指數‘,‘英國FTSE指數‘], "利率期貨":[‘長期利率期貨‘,‘短期利率期貨‘], "外匯期貨":[‘是一種在最終交易日按照當時的匯率將一種貨幣兌換成另外一種貨幣的期貨合約‘] }, ‘貴金屬期貨‘:{ "黃金期貨":[‘au1706‘,‘au1709‘], "白銀期貨":[‘ag1703‘,‘ag1709‘] } } 修改 future["貴金屬期貨"]["白銀期貨"][0]="ag1706"
其他操作
- values
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info.values())
結果是:
dict_values([‘jack‘, ‘rose‘, ‘lucy‘])
- keys
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info.keys())
結果是:
dict_keys([‘stu1703‘, ‘stu1702‘, ‘stu1701‘])
- items
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
print(info.items())
結果是:
dict_items([(‘stu1701‘, ‘jack‘), (‘stu1703‘, ‘lucy‘), (‘stu1702‘, ‘rose‘)])
- setdefault 去字典裏取key的值,如果取到就返回對應的value,如果取不到,就新增一項,並且賦予後面的值。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
info.setdefault(‘stu1706‘,‘lily‘)
print(info)
結果是:
{‘stu1702‘: ‘rose‘, ‘stu1701‘: ‘jack‘, ‘stu1706‘: ‘lily‘, ‘stu1703‘: ‘lucy‘}
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
info.setdefault(‘stu1706‘,‘lily‘)
print(info)
結果是:
{‘stu1702‘: ‘rose‘, ‘stu1703‘: ‘lucy‘, ‘stu1701‘: ‘jack‘}
- update 兩個dict之間的操作,如果有交叉的就更新,沒有的就合並,合並兩個字典。
info = {
‘stu1701‘:‘jack‘,
‘stu1702‘:‘rose‘,
‘stu1703‘:‘lucy‘,
}
b={‘stu1701‘:‘lily‘,
1:3,
2:5
}
info.update(b)
print(info)
結果是:
{‘stu1701‘: ‘lily‘, 1: 3, 2: 5, ‘stu1702‘: ‘rose‘, ‘stu1703‘: ‘lucy‘}
- 通過一個列表生成默認dict fromkeys()通過一個列表生成默認dict,有兩個參數,以一個值初始化這個字典。
c = dict.fromkeys([6,7,8],"test1")
結果是:
{8: ‘test1‘, 6: ‘test1‘, 7: ‘test1‘}
循環
-
方法1 for i in info: print(i,info[i])
-
方法2 for k,v in info.items(): print(k,v)
方法2會先把dict轉成list,。如果數據量大的話,轉換非常緩慢。
集合操作
概述
集合set 持有一系列元素,這一點和 列表list 很像,但是set的元素沒有重復,而且是無序的,這點和字典 dict 的 key很像。 它的主要作用如下:
去重,把一個列表變成集合,就自動去重了 關系測試,測試兩組數據之前的交集、差集、並集等關系。
常用操作
創建
list_1 = [1,2,3,4,5]
list_1 = set(list_1 )
list_2 = set([7,2,6,4,8])
print(list_1,list_2)
結果是:
{1, 2, 3, 4, 5} {8, 2, 4, 6, 7}
t = set("hello") #創建一個唯一字符的集合
結果是:
{‘o‘, ‘h‘, ‘e‘, ‘l‘}
常用操作
- 交集 b = t & s # t 和 s的交集
list_1 =set([1,2,3,4,5])
list_2 = set([7,2,6,4,8])
print(list_1.intersection(list_2))
print(list_1 & list_2)
結果是:
{2, 4}
{2, 4}
- 並集 a = t | s # t 和 s的並集
list_1 =set([1,2,3,4,5])
list_2 = set([7,2,6,4,8])
print(list_1.union(list_2))
print(list_1 | list_2)
結果是:
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
- 差集 c = t – s #求差集(項在t中,但不在s中)
list_1 =set([1,2,3,4,5])
list_2 = set([7,2,6,4,8])
print(list_1.difference(list_2))
print(list_1 - list_2)
結果是:
{1, 3, 5}
{1, 3, 5}
- 對稱差集
d = t ^ s # 對稱差集(項在t或s中,但不會同時出現在二者中)
list_1 =set([1,2,3,4,5])
list_2 = set([7,2,6,4,8])
print(list_1.difference(list_2))
print(list_1 - list_2)
結果是:
{1, 3, 5, 6, 7, 8}
{1, 3, 5, 6, 7, 8}
5.子集,父集
list_1 =set([1,2,3,4,5])
list_3 = set([1,2])
print(list_3.issubset(list_1))
print(list_1.issuperset(list_3))
結果是:
True
True
- 判斷交集是否為空 如果交集為空返回true
list_1 =set([1,2,3,4,5])
list_2 = set([7,2,6,4,8])
list_4 = set([7.8])
list_5 = set([3.5])
print(list_1.isdisjoint(list_2))
print(list_4.isdisjoint(list_2))
print(list_5.isdisjoint(list_2))
結果是:
False
True
True
- 增加
- add only one
list_1 =set([1,2,3,4,5])
list_1.add(11)
print(list_1)
結果是:
{1, 2, 3, 4, 5, 11}
- add many data
list_1 =set([1,2,3,4,5])
list_1.update([22,33,55])
print(list_1)
結果是:
{1, 2, 3, 4, 5, 33, 22, 55}
- 刪除
- remove()
list_1 =set([1,2,3,4,5])
list_1.remove(1)
print(list_1)
結果是:
{2, 3, 4, 5}
- pop()隨機刪除並把刪除的元素返回
t = set("hello")
print(t.pop())
結果是:
l
- discard()
t = set("hello")
t.discard(‘e‘)
print(t)
結果是:
{‘l‘, ‘o‘, ‘h‘}
- len() 返回長度
t = set("hello")
list_1 =set([1,2,3,4,5])
print(len(t))
print(len(list_1))
結果是:
4
5
列表,元組,集合,字典的區別和相互轉換
列表是一組值,其中的值可以改變。
lst = [‘arwen‘,123]
元組也是一組值,其中的值不能改變。
tup = (‘arwen‘,123)
列表與元組可以相互轉換。
集合是一組唯一的無順序的值。
#定義一個集合
list1 = [6, 7, 7, 8, 8, 9]
set2 = set(list1)
字典是無固定順序的鍵值對。
Dic={1:’monday’,2:’Tuesday’}
參考網頁
http://www.imooc.com/code/3269 http://www.cnblogs.com/alex3714/articles/5717620.html
python基礎10 字符串操作,字典操作,集合操作