1. 程式人生 > >python的一些基礎知識

python的一些基礎知識

1.首先,我的python是在linux環境下編譯的,windows下的暫時沒弄,首先先看看linux下有python環境沒,不過一般的都是自帶的,沒有的話安裝python

1.使用包管理器:

作業系統為Debian Linux (一般都是這個系統)命令:apt-get install python

如果是Gentoo Linux 就用emerge python

2.從原始檔編譯

首先進入下載頁面,下載原始碼,下載的副檔名為.tgz的檔案,放入一個位置

然後用tar xzvf解壓包 解壓好後進入其目錄下cd Python-2.5(以2.5的為例)  

然後./configure

make

make install

然後在終端裡直接輸入python進入python

python較比之c來說要簡潔的多,直接輸入就可以輸出的

#!/usr/bin/python

這個就是編譯python檔案的時候的頭(檔案都是以.py結尾的)
chmod +x *.py

寫完之後要給這個檔案賦予許可權,x代表可執行,也可以直接給777這種,還有就是a+x這種a代表所有的使用者和群組

./*.py

賦予許可權後就可以執行了,還可以python *.py這樣執行

互動式python直譯器可以當強大的計算器使用

>>> 1-2 
-1 
>>> 1+2 
3
>>> 3*3
9
>>> 1/2
0
>>> 1.0/2.0 
0.5
python 可以處理非常大的數
>>> 100000000000000000000000 
100000000000000000000000L 

>>> 100000000000000000000000L 
100000000000000000000000L

變數

這個和其他程式語言沒有任何不同,如果你從沒接觸過程式,相信你也很容易理解。

>>> x = 3 
>>> x*2 
>>> x = 5 
>>> x * 2

賦值給 ,那麼變數現在的值就是3, 乘以 結果是,我又把賦值給了 

,那麼與2相乘的結果肯定是10了。

定義變數規則:不能以數字開頭,可以包含字母、數字和下劃線。

語句

實際上最開始我們已經講了語句 print 就是列印輸出語句。

>>> 2*2 
4 

>>> print 2*2 
4

行和縮排

學習Python與其他語言最大的區別就是,Python的程式碼塊不使用大括號({})來控制類,函式以及其他邏輯判斷。python最具特色的就是用縮排來寫模組。

縮排的空白數量是可變的,但是所有程式碼塊語句必須包含相同的縮排空白數量,這個必須嚴格執行。

if True:
    print "True"
else:
  print "False"

獲取使用者輸入

有使用程式執行的過程需要使用者輸入,根據使用者輸入的內容繼續執行。

>>>input

>>>a = input("input:")

input:123# 輸入整數

>>>raw_input(把輸入當作原始資料,然後將其放入字串中)要求使用者帶著引號輸入他們的名字的時候就可以用這個函式

列表和元組

元組通常由不同的資料,而列表是相同的資料佇列.元組表示的是結構,而列表表示的是順序.舉個例子來講:當你想記錄棋盤上一個子的座標時,應該使用元組;當你想記錄棋盤上所有的子的座標(一系列相同的資料)時,應該使用列表

list(分片函式)通過 list(seq) 函式把一個序列型別轉換成一個列表。

>>> list('hello')  
['h', 'e', 'l', 'l', 'o'] 

del(刪除)

>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']  
>>> del names[2]  
>>> names  
['Alice', 'Beth', 'Dee-Dee', 'Earl']  


append(追加單個) append方法用於在列表末尾追加新的物件

>>> lst = [1, 2, 3]  
>>> lst.append(4)  
>>> lst  
[1, 2, 3, 4]  

extend(追加多個)extend 方法可以在列表的末尾一次性追加另一個序列中的多個值。

>>> a = [1, 2, 3]  
>>> b = [4, 5, 6]  
>>> a.extend(b)  
>>> a  
[1, 2, 3, 4, 5, 6]  

count(計數) count 方法統計某個元素在列表中出現的次數:

>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to')  
2  
>>> x = [[1,2], 1, 1, [2, 1, [1, 2]]]  
>>> x.count(1)  
2  
>>> x.count([1,2])  
1  

index(索引位置)用於從列表中找出某個值第一個匹配項的索引位置:

>>> numbers = [1, 2, 3, 5, 6, 7]  
>>> numbers.insert(3, 'four')  
>>> numbers  
[1, 2, 3, 'four', 5, 6, 7]  

insert(插入)用於將物件插入到列表中:

>>> numbers = [1, 2, 3, 5, 6, 7]  
>>> numbers.insert(3, 'four')  
>>> numbers  
[1, 2, 3, 'four', 5, 6, 7]  

pop(移除函式(預設為最後一個))pop 方法會移除列表中的一個元素(預設是最後一個),並且返回該元素的值:

>>> x = [1, 2, 3]  
>>> x.pop()  
3  
>>> x  
[1, 2]  
>>> x.pop(0)  
1  
>>> x  
[2]  

remove(移除) remove 方法用於移除列表中某個值的第一個匹配項:

>>> x = ['to', 'be', 'or', 'not', 'to', 'be']  
>>> x.remove('be')  
>>> x  
['to', 'or', 'not', 'to', 'be']  
>>> x.remove('bee')  
Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
ValueError: list.remove(x): x not in list  

reverse(反向存放)reverse 方法將列表中的元素反向存放。

>>> x = [1, 2, 3]  
>>> x.reverse()  
>>> x  
[3, 2, 1]  

sort(排序)sort 方法用於在原位置對列表進行排序。 

>>> x = [4, 6, 2, 1, 7, 9]  
>>> x.sort()  
>>> x  
[1, 2, 4, 6, 7, 9] 

tuple(轉換元組)tuple函式的功能與list函式基本上是一樣的:以一個序列作為引數並把它轉化為元組。

>>> tuple([1, 2, 3])  
(1, 2, 3)  

find(查詢 返回字串所在位置的最左端索引)
#查詢字串'dd'第一次出現的位置
>>> 'acddl123'.find('dd')
2
#查詢第一次出現空格的位置
>>> 'acdd l1 23'.find(' ')
4
#指定查詢的起始位置和結束位置
>>> 'acdd l1 23'.find(' ',3 ,6)
4

join(split的逆方法 將序列合成字串)

#!/usr/bin/python

str = "-";
seq = ("a", "b", "c"); # 字串序列
print str.join( seq );
以上例項輸出結果如下:
a-b-c
>>> a = ''
>>> a.join(['1','2','3'])
123

split(join的逆方法,將字串分割成序列)

#!/usr/bin/python

str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );
print str.split(' ', 1 );
以上例項輸出結果如下:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']

lower(將大寫字母變成小寫字母)

>>>'Trondheim Hammer Dance',lower()
'trondheim hammer dance'

replace(替換字串)

>>>'This is a test'.replace('is','eez')
'Theez eez a test'

strip(除去兩邊的空格)

>>> a = '     123   '
>>> a.strip()
'123'

translate(替換單個字元,可以多個替換)

#!/usr/bin/python

from string import maketrans   # 引用 maketrans 函式。

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab);
以上例項輸出結果如下:
th3s 3s str3ng 2x1mpl2....w4w!!!

字典
clear(清除字典中所有的項)

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7};

print "Start Len : %d" %  len(dict)
dict.clear()
print "End Len : %d" %  len(dict)
以上例項輸出結果為:
Start Len : 2
End Len : 0

copy(shallow copy淺複製是原本)

#!/usr/bin/python
 
dict1 = {'Name': 'Zara', 'Age': 7};
 
dict2 = dict1.copy()
print "New Dictinary : %s" %  str(dict2)
以上例項輸出結果為:
New Dictinary : {'Age': 7, 'Name': 'Zara'}

copy(deep copy深複製from copy import deepcopy)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
dict1 =  {'user':'runoob','num':[1,2,3]}
 
dict2 = dict1          # 淺拷貝: 引用物件
dict3 = dict1.copy()   # 淺拷貝:深拷貝父物件(一級目錄),子物件(二級目錄)不拷貝,還是引用
 
# 修改 data 資料
dict1['user']='root'
dict1['num'].remove(1)
 
# 輸出結果
print(dict1)
print(dict2)
print(dict3)
例項中 dict2 其實是 dict1 的引用(別名),所以輸出結果都是一致的,dict3 父物件進行了深拷貝,不會隨dict1 修改而修改,子物件是淺拷貝所以隨 dict1 的修改而修改。
{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'root'}
{'num': [2, 3], 'user': 'runoob'}

fromkeys(建立新的字典值為None)

#!/usr/bin/python

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print "New Dictionary : %s" %  str(dict)

dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" %  str(dict)
以上例項輸出結果為:
New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

get(訪問字典) get() 函式返回指定鍵的值,如果值不在字典中返回預設值。

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 27}

print "Value : %s" %  dict.get('Age')
print "Value : %s" %  dict.get('Sex', "Never")
以上例項輸出結果為:
Value : 27
Value : Never

has_key(檢查是否有給出的鍵, 如果鍵在字典dict裡返回true,否則返回false)

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7}

print "Value : %s" %  dict.has_key('Age')
print "Value : %s" %  dict.has_key('Sex')
以上例項輸出結果為:
Value : True
Value : False

items(將所有的字典以列表方式返回)

#!/usr/bin/python
# coding=utf-8
 
dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
 
print "字典值 : %s" %  dict.items()
 
# 遍歷字典列表
for key,values in  dict.items():
    print key,values
以上例項輸出結果為:
字典值 : [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('Runoob', 'www.runoob.com')]
Google www.google.com
taobao www.taobao.com
Runoob www.runoob.com

iteritems(返回一個迭代器)


keys(將字典中的鍵以列表的形式返回)

>>> x = {'title':'python web site','url':'www.iplaypy.com'}
>>> x.items()
[('url', 'www.iplaypy.com'), ('title', 'python web site')]
>>> a=x.items()
>>> a
[('url', 'www.iplaypy.com'), ('title', 'python web site')]
>>> type(a)
<type 'list'>
>>> f = x.iteritems()
>>> f
<dictionary-itemiterator object at 0xb74d5e3c>
>>> type(f)
<type 'dictionary-itemiterator'>    #字典項的迭代器
iterkeys(返回針對鍵的迭代器)

pop(獲得對應的於給定鍵的值,然後移除鍵—值)

>>>a=[1,2,3,4]
>>>print a.pop()#預設刪除最後一個物件,並輸出
>>>print a
4
[1,2,3]

popitem(移除隨機的鍵—值)

#!/usr/bin/python3

site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=site.popitem()
print(pop_obj)   
print(site)
輸出結果為:
('url', 'www.runoob.com')
{'name': '菜鳥教程', 'alexa': 10000}

setdefault(能獲得與給定鍵相關聯的值)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
dict = {'runoob': '菜鳥教程', 'google': 'Google 搜尋'}
 
print "Value : %s" %  dict.setdefault('runoob', None)
print "Value : %s" %  dict.setdefault('Taobao', '淘寶')
以上例項輸出結果為:
Value : 菜鳥教程
Value : 淘寶

update(利用一個字典更新另一個字典)

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }

dict.update(dict2)
print "Value : %s" %  dict
以上例項輸出結果為:
Value : {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}

values(以列表的形式返回字典中的值)

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7}

print "Value : %s" %  dict.values()
以上例項輸出結果為:
Value : [7, 'Zara']

itervalues(返回字典值的迭代器)
抽象
callable(用來判斷函式是否可呼叫)
def(建立函式)

現在就看了這麼多,先整理出來了,不喜勿噴