python数组的使用

Python021

python数组的使用,第1张

1、Python的数组分三种类型:

(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr = [元素]

(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr = (元素)

(3) Dictionary 词典类型, 即是Hash数组。定义方式:arr = {元素k:v}

2、下面具体说明这些数组的使用方法和技巧:

(1) list 链表数组

a、定义时初始化

a = [1,2,[1,2,3]]

b、定义时不初始化一维数组:

arr = []

多维数组: arr = [i for i in range(10), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i,

如:

arr = [i for i in range(5), j for j in range(5), []]

这是错误的

这是正确的

c、del 语句和 : 的用法

可以用 start : end 表示数组里的一个区间 ( i >= start and i <end)

del 删除数组里的指定元素

如:

d、遍历数组:

e、增加元素:

一维 arr.append('aaa')

二维 arr[0].append('aaa')

如果要在任意位置插入用 arr.insert(n, 值)

此外还有一种特殊的用法是:

arr += [数组元素]

在不指定下标的情况下,是允许用 += 增加数组元素的。

(2) Tuple 固定数组Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。

下面拿具体示例说明:

Tuple 没有的方法:

[1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。

[2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。

[3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用 tuple 的好处:

Tuple 可以转换成 list, 反之亦然。

转换方式为:

反之:

(2) Dictionary (哈希数组)词典数组

*Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:

*下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。

*可以直接增加一个元素,如果同名,则会改变原来的key的元素的值

*输出所有的key

*输出所有的value

*遍历数组

python3里这样:

>>>a=[1,2,3]

>>>b=2

>>>b in a

True #先判定b在a里

>>>a.index(b)

1 #b在a的位置1,数组第一个位置为0

参考代码如下:

using System

using System.Collections.Generic

using System.Linq

using System.Text

namespace FindMaxWithIndex

{

/// <summary>

/// 有一个数组,每个元素的值都是实数,请写出求最大元素的值及其位置的算法

/// </summary>

class Program

{

static void Main(string[] args)

{

double[] Num = new[] { -8, 4543.9, 4543.9, 3, 45, 654.7, 7, 66, 35, 45, 4, 6, 4543.9, 5, 46, 54, 6, 43, 5.980, 34, 4543.9 }

//double[] Num = new [] { 1.0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }

int[] index = SearchMaxWithIndex(Num)

Console.WriteLine("The max number is: {0}", Num[index[0]])

Console.Write("The index of max number is:")

for (int i = 0i <index.Lengthi++)

{

if (index[i] == -1) break

Console.Write(" '{0}'", index[i])

}

Console.ReadKey()

}

private static int[] SearchMaxWithIndex(double[] arr)

{

int[] pos = new int[arr.Length] //记录最大值所在位置的数组

int position = 0//初始设定数组的第1个元素为最大值

int j = 1//j指示位置数组pos的下标

for (int i = 1i <arr.Lengthi++)

{

if (arr[i] >arr[position])

{

position = i//记下新的最大值的位置

j = 1//位置数组pos的下标恢复为1,下标为0的位置为position预留

}

else if (arr[i] == arr[position])

pos[j++] = i//记下重复最大值的位置

}

pos[0] = position //位置数组pos的下标为0的位置为position预留

if (j <arr.Length) pos[j] = -1//-1为标识值,表示位置数组pos下标为0, 1, 2…(j-1)的位置存放的是最大值所在的位置

return pos

}

}

}