Python語言簡介

list
清單(列表,list)的用法。
# list operation
a=[0,1,2,3,4,5,6,7]
print 'a=',a
print 'a[1:5]=',a[1:5]   # a的第2~5的元素。
print 'a[1:5:2]=',a[1:5:2]   # a的第2~5每隔2的元素。
print 'len(a)=',len(a)	 # a 的元素個數。
print 'max(a)=',max(a)	# a 的最大元素。
print 'min(a)=',min(a)	# a 的最小元素。
print '3 in a:', 3 in a	# 3在a之中。True
print '8 in a:', 8 in a	# 8在a之中。False
print '9 not in a:', 9 not in a	# 9不在a之中。True
c=['x','y','z']	
print 'a+c=',a+c	# 將清單a與清單c結合。

b=a*3		# a的內容擴充為原來的3倍。
print 'b=',b

L1=list('python')	#將字串轉換為清單。
print 'L1=',L1

L2=[[1,2],[3,4],[5,6],7,8]
print 'L2=',L2
print 'L2[2][0]=',L2[2][0]  # 取出巢狀清單之特定元素(L2的第3元素之第1元素)

L2[1]='YCC'	# 將L2的第2元素取代為字串'YCC'。
print 'L2=',L2

L2[1]=L2[1]*3	# 將L2的第2元素擴充為原來的3倍。
print L2

L2[1:4]=[]	# 將L2的第2~4元素清空。
print 'L2-delete=',L2

####### 清單的常用涵數
####### list function: append(object), extend(L), insert(index,object),
####### remove(value), sort(), count(value), pop(index)

L2.append(12)	# 從L2的最後增加一元素12。
print 'append, L2=',L2
L2.pop(1)	# 將L2的第2元素抽去。
print 'pop L2=',L2
L2.insert(1,'THU')	# L2的第2元素前插入'THU'
print 'inset, L2=',L2

L1=[1,3,2,4,5,2,6,3,1,2]
L1.sort()	# L1的元素從小到大排列。
print L1
n=L1.count(2)	# L1中2出現的次數。
print n

print 'L1=',L1
print 'L2=',L2
L1.extend([1,2,3])	# 將清單L1
print 'L1=',L1
print 'L2=',L2
L1.extend(L2)	# 將清單L1從後方加入L2
print 'L1.extend(L2)=',L1






Please compare the 2 prints of the code below.
A=[1,2,3,4,5,'\n']
for x in A:
    print x,

for x in A:
    print x
###################the output:
1 2 3 4 5 
1
2
3
4
5






list的應用1.

list在向量的應用


a=[1,2,1]
b=[1,2,3]
# 向量的長度
a1=sum(a[i]**2 for i in range(3))
b1=sum(b[i]**2 for i in range(3))
print a1,b1,a1**0.5,b1**0.5
# 向量的內積
sc=sum(a[i]*b[i] for i in range(3))
print 'a dot b=',sc
# 向量的外積
c=[0 for i in range(3)]
c[0]=a[1]*b[2]-a[2]*b[1]
c[1]=a[2]*b[0]-a[0]*b[2]
c[2]=a[0]*b[1]-a[1]*b[0]
print 'c=a x b=',c



list的應用2:排序

1. 基本排序:單筆數據


a=[2,5,3,4,6,1]
b=[]
for i in range(len(a)):
    b.append(min(a))
    a.remove(min(a))
print 'b=',b



2. 多筆數據排序


def sort2(e,N1,N2,x):
    ee=[]
    for i in range(N1):
        e1=[]
        e1.append(e[i][x])
        for j in range(N2):
            e1.append(e[i][j])
        ee.append(e1)
    ee.sort()
    es=[]
    for i in range(N1):
        ee[i].pop(0)
        es.append(list(ee[i]))
    return es

N1=4
N2=3
x=2
e1=[[2,300,5],[1,400,3],[4,100,2],[3,200,6]]
print 'e1=',e1
e2=sort2(e1,N1,N2,x)
print 'e2=',e2



3. 從檔案輸入數據排序:


def sort2(e,N1,N2,x):
    ee=[]
    for i in range(N1):
        e1=[]
        e1.append(e[i][x])
        for j in range(N2):
            e1.append(e[i][j])
        ee.append(e1)
    ee.sort()
    es=[]
    for i in range(N1):
        ee[i].pop(0)
        es.append(list(ee[i]))
    return es

####################data read in from a file########
f=open('data.txt','r')
a=f.read()
b=a.split()
N1=8
N2=5
x=0
dat1=[]
for i in range(len(b)):
    dat1.append(float(b[i]))
print 'dat1=',dat1
dat2=[]
for i in range(N1):
    L=[]
    for j in range(N2):
        n=i*N2+j
        L.append(dat1[n])
    dat2.append(L)
dat3=sort2(dat2,N1,N2,x)
print 'dat3=',dat3



4. 元組(tuple)

在這篇文章中,您將學習有關Python元組的一切。更具體地說,什麼是元組,如何創建它們,何時使用它們以及您應該熟悉的各種方法。在Python編程中,元組與列表類似。兩者之間的區別在於,一旦賦值就不能改變元組的元素,而在列表中可以改變元素。因為元組與列表非常相似,所以它們在相似的情況下也是相同的。 但是,在列表上實現元組有一定的優勢。下面列出的是一些主要的優點: 我們通常將元組用於異構(不同)數據類型,並列出同類(類似)數據類型。 由於元組是不可變的,所以通過元組迭代比列表快。所以有一點提升。 包含不可變元素的元組可以用作字典的關鍵字。隨著名單,這是不可能的。 如果你的數據沒有改變,那麼把它作為元組來實現將保證它仍然是寫保護的。 創建一個元組 通過將所有項(元素)放在圓括號()中創建一個元組,用逗號分隔。括號是可選的,但是寫一個很好的做法。 一個元組可以有任意數量的項目,它們可以是不同的類型(整數,浮點數,列表,字符串等)。
# 空元組
# Output: ()
my_tuple = ()
print(my_tuple)

# 具有整數的元組
# Output: (1, 2, 3)
my_tuple = (1, 2, 3)
print(my_tuple)

# 具有混合數據類型的元組
# Output: (1, "Hello", 3.4)
my_tuple = (1, "Hello", 3.4)
print(my_tuple)

# 嵌套元組
# Output: ("mouse", [8, 4, 6], (1, 2, 3))
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)

#元組可以創建沒有括號
#也叫tuple包裝
#輸出:3,4.6,“狗”


my_tuple = 3, 4.6, "dog"
print(my_tuple)

# 元組拆包也是可以的
# Output:
# 3
# 4.6
# dog
a, b, c = my_tuple
print(a)
print(b)
print(c)
我們可以使用索引操作符[]來訪問索引從0開始的元組中的項目。 因此,具有6個元素的元組將具有從0到5的索引。嘗試訪問除(6,7,...)以外的元素將引發IndexError。 索引必須是一個整數,所以我們不能使用float或其他類型。 這將導致TypeError。 同樣,使用嵌套索引訪問嵌套元組,如下例所示。
my_tuple = ('p','e','r','m','i','t')

# Output: 'p'
print(my_tuple[0])

# Output: 't'
print(my_tuple[5])

# index must be in range
# If you uncomment line 14,
# you will get an error.
# IndexError: list index out of range

#print(my_tuple[6])

# index must be an integer
# If you uncomment line 21,
# you will get an error.
# TypeError: list indices must be integers, not float

#my_tuple[2.0]

# nested tuple
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# nested index
# Output: 's'
print(n_tuple[0][3])

# nested index
# Output: 4
print(n_tuple[1][1])
我們可以通過使用切片運算符 - 冒號“:”來訪問元組中的一系列項目。
my_tuple = ('p','r','o','g','r','a','m','i','z')

# elements 2nd to 4th
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])

# elements beginning to 2nd
# Output: ('p', 'r')
print(my_tuple[:-7])

# elements 8th to end
# Output: ('i', 'z')
print(my_tuple[7:])

# elements beginning to end
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])
我們可以使用關鍵字in來測試一個物件是否存在於一個元組中。
my_tuple = ('a','p','p','l','e',)
# Count
# Output: 2
print(my_tuple.count('p'))
# Index
# Output: 3
print(my_tuple.index('l'))

my_tuple = ('a','p','p','l','e',)
# In operation
# Output: True
print('a' in my_tuple)
# Output: False
print('b' in my_tuple)
# Not in operation
# Output: True
print('g' not in my_tuple)
我們不能改變元組中的一個元素
my_tuple = (4, 2, 3, [6, 5])

#我們不能改變一個元素
#如果您取消註釋 # my_tuple [1] = 9
#你會得到一個錯誤:
# TypeError: 'tuple' object does not support item assignment

# my_tuple[1] = 9

# 但可變元素的項目可以改變
# Output: (4, 2, 3, [9, 5])
my_tuple[3][0] = 9
print(my_tuple)
# 元組可以被重新分配
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
my_tuple = ('p','r','o','g','r','a','m','i','z')
print(my_tuple)

# Output: 
# Hello John
# Hello Kate
for name in ('John','Kate', 'Emily'):
     print("Hello",name)