raw_input ##字元類型
input##數值類型
'''##格式化輸出+注釋
切片
s[2:5]##切片從2開始到5,不包括5
[kiosk@foundation39 mnt]$ python
Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'hello'
>>> s [1:3]
'el'
>>> s [1:5:2]
>>> s [:-1]
'hell'
>>> s [3:]
'lo'
>>> s [2:3]
'l'
>>>
##字元串的其他操作
In [22]: s.
s.capitalize s.islower s.rpartition
s.center s.isspace s.rsplit
s.count s.istitle s.rstrip
s.decode s.isupper s.split
s.encode s.join s.splitlines
s.endswith s.ljust s.startswith
s.expandtabs s.lower s.strip
s.find s.lstrip s.swapcase
s.format s.partition s.title
s.index s.replace s.translate
s.isalnum s.rfind s.upper
s.isalpha s.rindex s.zfill
s.isdigit s.rjust
In [6]: s='xixi'
In [7]: s
Out[7]: 'xixi'
In [9]: help(s.center)##查詢幫助
Help on built-in function center:
center(...)
S.center(width[, fillchar]) -> string
Return S centered in a string of length width. Padding is
done using the specified fill character (default is a space)
(END)
s.center##輸入數字為寬度,不夠的預設空格補齊
In [16]: s.center(6)
Out[16]: ' xixi '##預設使用空格填充
In [17]: s.center(6,'#')
Out[17]: '#xixi#'
s.isalnum ##包含數字和字母
In [29]: "w2".isalnum()
Out[29]: True
s.istitle ##第一個字母大寫為标題語言,傳回true
In [27]: "Hello".istitle()
Out[27]: True
s.capitalize##将第一個字母轉換為大寫字母
In [26]: "hello".capitalize()
Out[26]: 'Hello'
s.isupper##輸入字元均為大寫為true
In [30]: "WQ".isupper()
Out[30]: True
In [31]: "Wq".isupper()
Out[31]: False
s.lower##将輸入轉換為小寫
In [32]: "Wq".lower()
Out[32]: 'wq'
s.upper##将輸入轉換為大寫
In [8]: s.upper()
Out[8]: ' SEWQF FEW'
s.swapcase##大小寫互相轉換
In [11]: a
Out[11]: 'svwgdSre'
In [13]: a.swapcase()
Out[13]: 'SVWGDsRE'
s.islower##預設輸入為小寫
In [33]: "Wq".islower()
Out[33]: False
In [34]: "wq".islower()
Out[34]: True
s.isspace #空格
In [39]: " ".isspace()
Out[39]: True
s.isdigit #數字
In [40]: "123".isdigit()
Out[40]: True
s.isalpha #字母
import string ##導入子產品
In [35]: import string
In [36]: str
str string
In [36]: string.digits##數字
Out[36]: '0123456789'
In [37]: string.letters##字母
Out[37]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
s.strip##屏蔽前後的空格
In [6]: s=" sewqf few"
In [7]: s.strip()##屏蔽前後空格,但是不能去中間的
Out[7]: 'sewqf few'
s.lstrip##屏蔽左邊的空格
s.rstrip##屏蔽右邊的空格
s.startswith('?')##s是以?開頭的,輸出true或false
s.endswith('?')##s是以?結尾的,輸出true或false
s.split##指定分隔符
In [15]: ip.split('.')##括号裡面指用什麼作分隔符,預設是空格
Out[15]: ['172', '25', '254', '39']
In [18]: 'swfr:def:21:dfew:///'.split(":")
Out[18]: ['swfr', 'def', '21', 'dfew', '///']
練習:
要求使用者輸入一個英文句子,統計該英文句子中含有單詞的數目;
提示:英文單詞間可以認為都用英文空格進行分割
測試資料:
-輸入:my name is aely
-輸出:4
#########
#!/usr/bin/env python
#coding:utf-8
__author_ = "aely"
'''
@author:aely
@file:tsetter.1.py
@contact:
@time:7/1/1711:13 AM
@desc:
a = raw_input("Please input an English sentence:")##定義字元型
str1 = a.split()##用空格分隔a
print len(str1)##輸出str1的長度
##########
實驗輸出:
Please input an English sentence:my name is xiao
4
清單的定義:
# 定義一個空清單
list = []
In [24]: li
Out[24]: ['xiaowenya', 3, 'boy']
In [27]: "xiaowenya" in li
In [28]: "xiaopangpang" in li
Out[28]: False
In [29]: "xiaopangpang" not in li
# 定義一個包含元素的清單,元素可以是任意類型,包括數值類型,清單,字元串等均可。
清單是可變類型的序列,而元組與字元串是不可變類型的序列
# 此處定義一清單,名為list1
>>> list1 = ["fentiao", 4, "male"]
# 通過python的内置函數type檢視list1的資料類型
>>> type(list1)
<type 'list'>##類型是清單
>>> list1[1]##檢視下标為1元素的值
>>> list1[1] = 5##重新給這個索引指派
>>> list1##發現清單的元素是可變的
['fentiao', 5, 'male']
清單的操作:了解"對象=屬性+方法"與類
清單的索引和切片
# 清單的索引:下标是從0開始計算,比如list[0]讀取的是清單的第1個元素;
list[-1]讀取的是清單的倒數第1個元素;
>>> list1[0]
'fentiao'
>>> list1[-1]
'male'
# 清單的切片
>>> list1[:] //通過切片的方式可以實作清單的複制
# 0代表從哪個索引開始切片,3代表切片到哪個位置,并且不包含第三個索引,2代表切片的步長;
>>> list1[0:3:2]
['fentiao', 'male']
清單的添加:
>>> list1[3] = "cat"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> list1.append('cat')##添加元素
>>> list1
['fentiao', 5, 'male', 'cat']
清單的删除:
方法一:
>>> list1.remove("cat")>>> list1
['fendai', 5, 'male']
方法二:
>>> list1.remove(list1[3])
方法三:
>>> del(list1[3])
清單的修改
>>> id(list1)
140205776057408
>>> list1[0] = "fendai"
['fendai', 5, 'male', 'cat']
清單的重複
In [36]: li3 = li*3
In [37]: li3
Out[37]: ['xiaowenya', 3, 'boy', 'xiaowenya', 3, 'boy', 'xiaowenya', 3, 'boy']
清單的計算
In [30]: li1 = [1,2]+[3]
In [31]: li1
Out[31]: [1, 2, 3]
In [32]: li = [1,2]+3##隻能類型相同
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-32-ca053263556f> in <module>()
----> 1 li = [1,2]+3
TypeError: can only concatenate list (not "int") to list
li.append 添加 li.extend 可疊代的 li.insert 插入 li.remove 删除 li.sort 排序
li.count 計數 li.index 索引 li.pop 彈出 li.reverse 倒叙
In [44]: li
Out[44]: ['xiao', 3, 'boy', 'like', 'yes']
In [47]: li.remove(li[1])##删除
In [50]: li
Out[50]: ['xiao', 'boy', 'like', 'yes']
In [51]: li.pop()##彈出
Out[51]: 'yes'
In [52]: li
Out[52]: ['xiao', 'boy', 'like']
In [53]: li.append('ni')##添加
In [54]: li
Out[54]: ['xiao', 'boy', 'like', 'ni']
In [55]: li.extend(['5','wq'])##可疊帶增加多個元素
In [56]: li
Out[56]: ['xiao', 'boy', 'like', 'ni', '5', 'wq']
In [57]: li.insert(1,'is')##在“1”的位置上插入is
In [58]: li
Out[58]: ['xiao', 'is', 'boy', 'like', 'ni', '5', 'wq']
In [63]: li.sort()##排序
In [64]: li
Out[64]: ['5', 'boy', 'is', 'like', 'ni', 'wq']
In [71]: li.index('is')##索引,is是li清單的第2位
Out[71]: 2
In [72]: li.count('is')##計數,檢視is出現幾次
Out[72]: 1
In [74]: li.reverse()##倒序
In [75]: li
Out[75]: ['wq', 'ni', 'like', 'is', 'boy', '5']
continue##跳出本輪循環
break##徹底跳出循環
元組的定義:
定義空元組
tuple = ()
定義單個值的元組
tuple = (fentiao,)##後面要加,隔開
一般的元組
tuple = (fentiao, 8, male)
為什麼需要元組?
>>> userinfo1 = "fentiao 4 male"
>>> userinfo2 = "westos 10 unknown"
>>> userinfo1[:7]
>>> userinfo2[:6]
'westos'
字元串中操作提取姓名/年齡/性别的方式不友善,誕生元組與清單這兩個資料類型
>>> t1 = ("fentiao",4,"male")>>> t2 = ("westos", 10, "unknown")
>>> type(t1)
<type 'tuple'>
>>> type(t2)
>>> t1[0]
>>> t2[0]
>>> t2[0:2]
('westos', 10)
不能對元組的值任意更改
>>> t1
('fentiao', 4, 'male')
>>> t1[1] = 5
TypeError: 'tuple' object does not support item assignment
In [93]: t
Out[93]: ('1', '2', '3', [1, 3])
In [94]: t(3)=5
File "<ipython-input-94-230a57c5feed>", line 1
t(3)=5
SyntaxError: can't assign to function call
In [95]: t[3][0]=5##不是絕對不能更改,元組裡面的清單可以更改
In [96]: t
Out[96]: ('1', '2', '3', [5, 3])
對元組分别指派,引申對多個變量也可通過元組方式分别指派
>>> name,age,gender=t1
>>> print name,age,gender
fentiao 4 male
>>> a,b,c=(1,2,3)
>>> print a,b,c
1 2 3
注意:C語言中,定義一類型,必須先開辟一存儲空間,當後期重新指派時也一定是整型的;
python中,先在記憶體上存儲資料後,再通過标簽去引用。不同的字元串占用不同的存儲空間。
>>> str1
'12345'
>>> id(str1)
140205776037520
>>> str1 = "abcde"
140205776037424
>>> str2 = "12345"
>>> id(str2)
元組的切片:
In [97]: t
Out[97]: ('1', '2', '3', [5, 3])
In [98]: t[0:2]
Out[98]: ('1', '2')
元組的添加:
In [100]: t=(1,2,3)
In [101]: type(t)
Out[101]: tuple
In [102]: t=(1,2,3)+(1,2)
In [103]: t
Out[103]: (1, 2, 3, 1, 2)
In [104]: t=(1,2,3)+1##隻能添加相同類型的
<ipython-input-104-fbc0071c5f9b> in <module>()
----> 1 t=(1,2,3)+1
TypeError: can only concatenate tuple (not "int") to tuple
In [105]:
元組的
In [105]: t.
t.count t.index
del(t)##删除元組t
集合:
1.集合不能為空
2.集合中不能出現清單
set的應用場景
根據前面的這些鋪墊,對于為什麼會有集合set這個資料類型有了一定的了解,那現在我們做以總結:
集合是一個無序的,不重複的資料組合。
集合可去除清單中重複的元素。集合有其他資料類型沒有的屬性,即關系測試,包含交集、差集、并集、是否為子集、是否為父集等方法。
集合的關系測試操作
#/usr/bin/env python
定義集合的兩種方法:
1) 定義一清單,名為list_1
list_1 = [1, 2, 3, 4, 5, 1, 2, 3]
通過set方法,将資料類型從清單轉換為集合的資料類型
set_1 = set(set_1)
2) 直接定義一集合,名為set_2
set_2 = {1, 2, 45, 66, 3}
print set_1, type(list_1),type(set_1)
print set_1, set_2
實作集合的關系的第一種方式:set已有方法實作
# 交集
print "交集為: set_1.intersection(set_2) 或者 s1&s2
#并集
print "并集為: set_1.union(set_2) 或者 s1 | s2
list1 = [1,2,3,4,1,2,3]
s1 = set(list1)
print s1
s2 = {1,2,100,'hello'}
print s1.union(s2)##s2與s1的并集
print s1.intersection(s2)##s2與s1的交集
s2.intersection_update(s1)##将s1與s2求交集并更新給s2
print s2
輸出:
set([1, 2, 3, 4])
set([1, 2, 3, 4, 100, 'hello'])
set([1, 2])
#差集s1 - s2
print "set_1與set_2的差集為:set_1.difference(set_2)
print "set_2與set_1的差集為:set_2.difference(set_1)
print s1.difference(s2)
print s2.difference(s1)
set([3, 4])
set([100, 'hello'])
# 對等差分 s2 ^ s1(隻取兩個不同的部分)
//symmetric 對稱的,與set_1.difference剛好相反
print "set_1的對等差分:%s " % set_1.symmetric_difference(set_2)
#子集
print "set_1是set_2的子集麼? %s" % set_1.issubset(set_2)#父集
print "set_2是set_1的父集麼? %s" % set_1.issuperset(set_2)
#Return True if two sets have a null intersection.
print "set_1和set_2是否沒有交集? %s" % set_1.isdisjoint(set_2)
實作集合的關系的第二種方式:數學符号實作
print set_1 & set_2
print set_1 | set_2
#差集
print set_1 - set_2
print set_2 - set_1
# 對等差分
print set_1 ^ set_2
集合的增删
實作集合的增加與删除
s = {1,2,3}
# 集合的添加
s.add(1) #在集合中添加一項
s.update([1,3,4]) #在集合中添加多項,跟的參數應該是可疊代類型
print s# 集合的删除
s.remove(1) #删除集合中指定的元素,如果該元素不存在,則報錯
s.discard(1) #删除集合中指定的元素,如果該元素不存在,則不報錯
s.pop() #随機删除集合中的某個元素
s.clear() #清空集合的所有元素
# 集合的其他操作
print len(s) #顯示集合set的長度
print 1 in s #檢測某元素是否為集合s的成員,傳回布爾值
s.copy() #集合的淺拷貝,此處不深入研究,後面會說
本文轉自AELY木部落格51CTO部落格,原文連結http://blog.51cto.com/12768057/1944967如需轉載請自行聯系原作者
AELY木