建议先看完前面的章节,前面章节内容:
5 我真的不想看大段的字串啊!(list的概念)
这章我觉得会无比的难,因为要重新理解一下Python对于数据的整理模式。在学习用=进行赋值的时候大概提了一下,用=可以给一个变量赋予一个「字串」的值(如脚本1),也可以给一个变量赋予一个「数字」的值(如脚本2)。
[code language=”python”]
#脚本1
a="Python so easy"
[/code]
[code language=”python”]
#脚本2
a=2016
[/code]
可是对于语言学工作者来说,如果只有字串(string)能处理文字,就算是字串命令很多(见第二章),也常有捉襟见肘的感觉。好在,Python很友善地加入了一个叫做列表(list)的变量类型,形象一点来说就是一只大鱼吃了一只小鱼,这只小鱼可以是字串(string),可以是数字(number),也可以是……算了,其他的现在还不重要。重要的是,给一个变量赋值为列表的时候要使用中括号[]。
[code language=”python”]
#脚本3
a=["Python", "so", "easy"]
print a
# => ["Python", "so", "easy"]
[/code]
从实用的角度来说,如果我有一句话,我把这句话定义为字串(string)之后,我可以使用字串的split命令非常轻松地【把这句话里的每一个单词变成一个字串,并放进一个列表里】(如脚本4)。(说好的wordlist这么快就要来了?!)
[code language=”python”]
#脚本4
text="Python is a widely used general-purpose, high-level programming language."
words=text.split()
print words
# => [‘Python’, ‘is’, ‘a’, ‘widely’, ‘used’, ‘general-purpose,’, ‘high-level’, ‘programming’, ‘language.’]
[/code]
列表(list)和字串(string)有些命令是「共享」的,比如count()这个命令,也可以用来计算一个列表里某一个元素出现的次数(脚本5):
[code language=”python”]
#脚本5
mylist=[‘Python’, ‘is’, ‘a’, ‘widely’, ‘used’, ‘general-purpose,’, ‘high-level’, ‘programming’, ‘language.’]
b=mylist.count(‘is’)
print b
# => 1
[/code]
可是在字串(string)里查找某一个小字串位置的命令find()并不适用于列表(list),在处理列表时需要使用index()这个命令,就像脚本6一样。
[code language=”python”]
#脚本6
mylist=[‘Python’, ‘is’, ‘a’, ‘widely’, ‘used’, ‘general-purpose,’, ‘high-level’, ‘programming’, ‘language.’]
b=mylist.index(‘a’)
print b
# => 2
[/code]
其实对于列表(list)来说,最重要的命令也许并不是count或index,而是append(在列表的最后加入一个元素)和pop(把列表最后一个元素提取出来,【并且把这个元素从列表最后的位置删掉】)。什么?你没听说过【人生就是不停地append再pop】这句话?
mylist.append('linguistics')
在mylist这个列表的最后加入字串”linguistics”
mylist.pop()
把最后一个元素抽取出来(千万记得要用=【赋值!】)
mylist.insert(0,"linguistics")
在最前面加入字串”linguistics”(insert也可以用于插入任何位置)
mylist.pop(0)
把第一个元素抽取出来(千万记得要用=【赋值!】)
实战是最好的老师。【让执行脚本的人输入三个字串,存在一个列表里】。对了,忘了说一个小技巧,在对列表(list)进行操作的时候,最好预先将那个变量定义成一个空的列表,以免发生意外。
[code language=”python”]
#脚本7
mylist=[]
a1=raw_input("your first word? ")
mylist.append(a1)
a2=raw_input("your second word? ")
mylist.append(a2)
a3=raw_input("your third word? ")
mylist.append(a3)
print mylist
[/code]
【隐藏章节】
突然觉得如果这样就把关于列表(list)的部分过掉,很多人可能会不开心。列表(list)有一个并不少见的用法是【在列表里检查某个元素是否出现过】(或者换个说法,列表是否包含某个元素)。受欢迎的原因可能是因为列表(list)本身既可以包含字串(string)也可以包含数字(number),比如脚本8中的mylist这个列表里既有字串的”2″又有数字的3。使用in可以检查某个元素是不是在列表里。
[code language=”python”]
#脚本8
mylist=["python", "2", "or", "python", 3]
c3=3 in mylist
c2=2 in mylist
print c3
print c2
# => True
# False
[/code]
结果是说在mylist里找到了数字的3,但是没找到数字的2。千万要注意的是这里的【True和False都不是字串】,而是代表了一种「逻辑关系」,甚至最好理解为两个数字…True是1,False是0……
小抄:字串.split(),list=[],列表.count(某元素),列表.index(某元素),append vs pop