Python一种面向对象,解释型计算机程序设计语言。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言,它已成为最受欢迎的程序设计语言之一。我选择学习python是因为它在科学计算的优势,以及它作为“胶水语言”,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。不要再问python与R谁在数据科学方面更好,我认为最好的方式就是将它们结合起来!
数据结构
数据结构基本就是可以处理一些数据的结构,在python中有四种内建的数据结构:列表,元组,字典和集合。
列表:list是处理一组有序项目的数据结构,即你可以在一个列表中储存一个序列的项目,每个项目用逗号分割,并用方括号括起来。
>>> shoplist= [“apple”, “mango”, “carrot”,”banana”]
>>>shoplist
[‘apple’,’mango’, ‘carrot’, ‘banana’]
可以通过索引来选取列表中的元素:
>>>shoplist[0]
‘apple’
(python中0开始计算,这与R不同)我们可以添加,删除或是搜索列表中的项目:
>>>del shoplist[0]
>>> shoplist
[‘mango’, ‘carrot’, ‘banana’]
由于可以增加或删除项目,我们说列表是可变的数据类型。
元组:它用来将多样的数据对象集合到一起。元组和列表十分相似,只不过元组和字符串一样是不可变的即你不能修改元组。元组通过在圆括号中用逗号分割的项目定义。
>>> zoo= (“python”, “elephant”, “penguin”)
>>> zoo
(‘python’,’elephant’, ‘penguin’)
>>>newzoo = (“mokey”, “camel”, zoo)
>>>newzoo
(‘mokey’,’camel’, (‘python’, ‘elephant’, ‘penguin’))
我们可以使用newzoo[2][2]来访问newzoo元组的第三个项目的第三个项目。
>>>newzoo[2][2]
‘penguin’
一个空的元组由一对空的圆括号组成,如myempty=()。然而,含有单个元素的元组就必须在第一个(唯一一个)项目后跟一个逗号,这样python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton=(2,)
字典:它类似于通过联系人名字查找地址和联系人详细情况的地址簿。即,我们把键(名字)和值(详细情况)联系在一起。键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。而且只能使用不可变的对象(如:字符串)来作为字典的键,但是可以把不可变或可变的对象作为字典的值。
键值对在字典中以这样的方式标记:d=key1:value1,key2:value2。它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。
字典中的键/值对是没有顺序的,如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。
>>> ab= { “swaroop” : “swaroop@swaroopch.com”,
“larry” :”larry@wall.org”,
“spammer” :”spammer@hotmail.com”
}
>>>print(“swaroop’s address is”, ab[“swaroop”])
swaroop’saddress is swaroop@swaroopch.com
我们可以使用索引操作符来寻址一个键并为它赋值,这样就增加了一个新的键/值对:
>>>ab[“guido”] = “guido@python.org”
>>> if”guido” in ab:
print(“\nguido’s address is”,ab[“guido”])
guido’s address is guido@python.org
序列:列表,元组,和字符串都是序列,序列的主要特点是索成员检验和索引操作符,索引操作符让我们可以直接从序列中抓取一个特定项目。
上面提到的三种类型的序列:列表,元组和字符串也有切片操作,切片操作让我们取出序列的薄片,例如序列的部分。
>>>shoplist = [“apple”, “mango”, “carrot”,”banana”]
>>>shoplist[1:3]
[‘mango’,’carrot’]
>>>shoplist[2:]
[‘carrot’,’banana’]
>>>shoplist[1:-1]
[‘mango’,’carrot’]
>>>shoplist[:]
[‘apple’,’mango’, ‘carrot’, ‘banana’]
每当你用方括号中的一个数来指定一个序列的时候,python会为你抓取序列中对应位置的项目。你可以用负数做切片,负数用在从序列尾开始计算的位置,例如shoplist[:-1]会返回除了最后一个项目外包含所有项目的序列切片。
你也可以给切片规定第三个参数,就是切片的步长(默认步长是1):
>>>shoplist[::2]
[‘apple’,’carrot’]
集合:它是没有顺序的简单对象的聚集。当在聚集中一个对象的存在比其顺序或者出现的次数重要时使用集合。
使用集合,可以检查是否是成员,是否是另一个集合的子集,得到两个集合的交集等等。
>>> bir= set([“brazil”, “russia”, “india”])
>>> bir
{‘brazil’,’russia’, ‘india’}
控制流
在python中有三种控制流语句:if,for和while。
if语句:用来检验一个条件,如果条件为真,我们运行一块语句(称为if块),否则我们处理另一块语句(称为else块),else子句是可选的。
number = 23
guess =int(input(“Enter an integer:”))
if guess ==number:
print(“Congratulations, you guessedit.”)
print(“but you do not win anyprizes!”)
elif guess <number:
print(“No, it is a little higher thanthat”)
else:
print(“No, it is a little lower thanthat”)
print(“Done”)
我们使用input()函数取得用户猜测的数字,用int函数把这个字符串转换为整数。同一层次的语句必须有相同的缩进。
while语句:只要在一个条件为真的情况下,while语句允许你重复执行一块语句。While语句有一个可选的else从句。
number =23
running = True
while running:
guess=int(input(“Enter aninteger:”))
if guess == number:
print(“Congratulation, you guessedit.”)
running=False
elif guess < number:
print(“No, it is a litterhigher.”)
else:
print(“No, it is a litterlower.”)
else:
print(“the while loop is over.”)
这个例子的优势在于用户可以不断的猜数,直到猜对为止,这个列子恰当的说明了while语句的使用。
for循环:for..in是另外一个循环语句,它在一序列的对象上迭代,即逐一使用序列中的每个项目。
for i inrange(1, 5):
print(i)
else:
print(“The for loop is over.”)
range(1,5)给出序列[1,2,3,4]。默认步长为1,如果我们为序列提供第三个数,那么它将成为步长。range向上延伸到第二个数,即它不包含第三个数。
函数
函数是重要的程序段,它们允许你给一个语句块一个名称,然后可以用这个名字在程序的任何地方任意多次地运行这个语句块。这称为调用函数。
函数用关键字def来定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。
def printmax(a,b):
if a > b:
print(a, “is maximum”)
elif a == b:
print(a, “is equal to “, b)
else:
print(b, “is maximum”)
printmax(3, 4)
参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。函数中的参数名称为形参而你提供给函数调用的值称为实参。
如果不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
>>> defsay(message, times = 1):
print(message * times)
>>>say(“hello”)
hello
>>>say(“hello”, 5)
hellohellohellohellohello
(ps:一直以来都记着要学python,拖到现在终于开始了。接下来我看完聚类分析就会结束《数据挖掘 概念与技术》那本书,然后主要看《统计学习方法》和《利用python进行数据分析》。)