1.Python的数组分三种类型
(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
定义方式:arr = [元素]
(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
定义方式:arr = (元素)
(3) Dictionary 词典类型, 即是Hash数组。
定义方式:arr = {元素k:v}
2.数组的使用方法和技巧
(1) list 链表数组
定义时初始化:
a = [1,2,[1,2,3]]
定义时不初始化:
arr = [i for i in range(10), 1,[]] 注意, i for in xx 这个必须放在第一个位置,否则要先定义i,如:
i = 0
j = 0
arr = [i for i in range(5), j for j in range(5), []]
del 语句 和 : 的用法
可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)
del 删除数组里的指定元素,如: del arr[0] del arr[0, 2] newarr = arr[0, 2]
遍历数组:
for k, v in enumerate(arr):
print k, v
(2) Dictionary (哈希数组)词典数组
#Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:
#下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。
dict_arr = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']}
#可以直接增加一个元素,如果同名,则会改变原来的key的元素的值
dict_arr['d'] = 'dog'
#输出所有的key
print dict_arr.keys()
#输出所有的value
print dict_arr.values()
#遍历数组
import types
for k in dict_arr:
v = dict_arr.get(k)
if type(v) is types.ListType: #如果数据是list类型,继续遍历
print k, '---'
for kk, vv in enumerate(v):
print kk, vv
print '---'
else:
print dict_arr.get(k)
list的方法:
L.append(var) #追加元素
L.insert(index,var)
L.pop(var) #返回最后一个元素,并从list中删除之
L.remove(var) #删除第一次出现的该元素
L.count(var) #该元素在列表中出现的个数
L.index(var) #该元素的位置,无则抛异常
L.extend(list) #追加list,即合并list到L上
L.sort() #排序
L.reverse() #倒序
list 操作符:,+,*,关键字del
a[1:] #片段操作符,用于子list的提取
[1,2]+[3,4] #为[1,2,3,4]。同extend()
[2]*4 #为[2,2,2,2]
del L[1] #删除指定下标的元素
del L[1:3] #删除指定下标范围的元素
- Tuble固定数组
Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。
下面拿具体示例说明:
>>> t = ("a", "b", "c", "d", "e") #用小括号包围来定义
>>> t
('a', 'b', 'c', 'd', 'e')
>>> t[0] #直接列出某下标的元素
'a'
>>> t[-1] #负数表示,从后面倒数的索引 -1 为倒数第一个, 0是顺数第一个
'example'
>>> t[1:3] #这里 1:3 是 i>=1 and i<3 的区间
('b', 'mpilgrim')
使用 tuple 的好处:
Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
Tuple 可以转换成 list, 反之亦然。
转换方式为:
t = list( t )
反之:
arr = tuple( arr )
3.创建和初始化数组:
(1)使用列表创建数组:
在Python中,可以使用列表来创建数组。示例代码如下:
...
Python
array = [1, 2, 3, 4, 5]
print(array)
...
(2) 访问数组元素:
可以使用索引来访问数组中的特定元素。示例代码如下:
...
python
array = [1, 2, 3, 4, 5]
print(array[0]) # 访问第一个元素
print(array[-1]) # 访问最后一个元素
...
(3)数组切片:
使用切片操作可以获取数组的子集。示例代码如下:
...
python
array = [1, 2, 3, 4, 5]
print(array[1:4]) # 获取索引1到3的子数组
...
4.数组统计和操作:
(1)数组求和:
使用numpy库中的sum()函数可以对数组进行求和操作。示例代码如下:
...
python
import numpy as np
array = np.array([1, 2, 3, 4, 5])
result = np.sum(array)
print(result)
...
这段代码计算了数组中所有元素的和,并将结果打印出来。
(2) 数组排序:
使用numpy库中的sort()函数可以对数组进行排序操作。示例代码如下:
...
python
import numpy as np
array = np.array([3, 1, 5, 2, 4])
result = np.sort(array)
print(result)
...
这段代码对数组进行排序,并将结果打印出来。
5.string: 字符串(即不能修改的字符list)
str = “Hello My friend”
字符串是一个整 体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。
子字符串的提取
str[:6]
字符串包含 判断操作符:in,not in
“He” in str
“she” not in str
string模块,还提供了很多方法,如
S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start [,end]]) #反向查找
S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
S.rindex(substring,[start [,end]])#同上反向查找
S.count(substring,[start [,end]]) #返回找到子串的个数
S.lowercase()
S.capitalize() #首字母大写
S.lower() #转小写
S.upper() #转大写
S.swapcase() #大小写互换
S.split(str, ‘ ‘) #将string转list,以空格切分
S.join(list, ‘ ‘) #将list转string,以空格连接
len(str) #串长度
cmp(“my friend”, str) #字符串比较。第一个大,返回1
max(‘abcxyz’) #寻找字符串中最大的字符
min(‘abcxyz’) #寻找字符串中最小的字符
string的转换:
oat(str) #变成浮点数,float(“1e-1″) 结果为0.1
int(str) #变成整型, int(“12″) 结果为12
int(str,base) #变成base进制整型数,int(“11″,2) 结果为2
long(str) #变成长整型,
long(str,base) #变成base进制长整型,
str_format % (参数列表)