1、产生n个全为1的数组
a=[1]*n
2、字符数字转化
int('12')
float('12.5')
str(123.45)
ASCII码转为相应的字符:chr(97)
字符转化为相应的ASCII码:ord('a')
3、三元运算
b = 100
a = 10 if b>0 else 5 #a = 10
a = 100 if b<0 else 5 # a = 5

4、python数组的使用

4-1、Python的数组分三种类型:
(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
定义方式:arr = [元素]

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

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

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

(1) list 链表数组
a、定义时初始化
a = [1,2,[1,2,3]]

b、定义时不初始化
一维数组:
arr = []

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

如:
arr = [i for i in range(5), j for j in range(5), []]
这是错误的
i = 0
j = 0
arr = [i for i in range(5), j for j in range(5), []]
这是正确的(需要初始化i、j)

c、del 语句 和 : 的用法
可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)
del 删除数组里的指定元素
如: del arr[0]
del arr[0, 2]
newarr = arr[0, 2]

d、遍历数组:
for k, v in enumerate(arr):
print k, v

e、增加元素:
一维
arr.append('aaa')
二维
arr[0].append('aaa')
如果要在任意位置插入用 arr.insert(n, 值)
此外还有一种特殊的用法是:
arr += [数组元素]
在不指定下标的情况下,是允许用 += 增加数组元素的。

(2) Tuple 固定数组
Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。
下面拿具体示例说明:
>>> t = ("a", "b", "c", "d", "e") #[1] 用小括号包围来定义
>>> t
('a', 'b', 'c', 'd', 'e')
>>> t[0] #[2] 直接列出某下标的元素
'a'
>>> t[-1] #[3] 负数表示,从后面倒数的索引 -1 为倒数第一个, 0是顺数第一个
'example'
>>> t[1:3] #[4] 这里 1:3 是 i>=1 and i<3 的区间
('b', 'mpilgrim')

Tuple 没有的方法:
[1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。
[2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。
[3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用 tuple 的好处:
* Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。
* 如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
* 还记得我说过 dictionary keys 可以是字符串, 整数和 “其它几种类型”吗? Tuples 就是这些类型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。

Tuple 可以转换成 list, 反之亦然。
转换方式为:
t = list( t )
反之:
arr = tuple( arr )

(3) 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()

#遍历数组
for k in dict_arr:
  v = 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] #删除指定下标范围的元素
list的复制
L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
L1 = L[:] #L1为L的克隆,即另一个拷贝。

list comprehension
[ <expr1> for k in L if <expr2> ]

5、dictionary: 字典(即C++标准库的map)
dict = {‘ob1′:’computer’, ‘ob2′:’mouse’, ‘ob3′:’printer’}
每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
键是唯一的,字典只认最后一个赋的键值。

dictionary的方法
D.get(key, 0) #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key) #有该键返回TRUE,否则FALSE
D.keys() #返回字典键的列表
D.values()
D.items()

D.update(dict2) #增加合并字典
D.popitem() #得到一个pair,并从字典中删除它。已空则抛异常
D.clear() #清空字典,同del dict
D.copy() #拷贝字典
D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小)
#第一个大返回1,小返回-1,一样返回0

dictionary的复制
dict1 = dict #别名
dict2=dict.copy() #克隆,即另一个拷贝。

6、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进制长整型

转载于:https://www.cnblogs.com/maowuyu-xb/p/8646628.html

Python常用的几种数据结构-链表,数组,字典相关推荐

  1. python 常用的几种定位方式

    Python常用的几种定位方法 一,python 常用的8种定位方法1,使用 ID定位 driver.find_element_by _id('ID 值')driver.find_element(by ...

  2. python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...

    [综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...

  3. python 常用的8种经典数据结构

    python原生数据结构:元组Tuple(),列表List[],集合Set{},字典Dictionary{A:B}: NumPy包中的数据结构:数组Ndarray(带多种操作),矩阵Matrix(多种 ...

  4. 数据结构——链表数组

    链表数组 链表数组是什么? 链表数组实现 链表数组是什么? 链表数组是由链表构成的数组,即数组每一个元素都是链表 链表数组实现 getBucket()根据hashcode获取桶数 Node数组元素节点 ...

  5. Python常用的几种去重方式

    由于Python的去重方式比较多,本人在项目中总结了几种常用方法,欢迎补充. 一.对列表去重 1.用循环查找的方式 li = [1,2,3,3,4,2,3,4,5,6,1] news_li = [] ...

  6. 关于Halcon C++常用的两种数据结构Hobject和HTuple

    HALCON里面有很多数据类型,但是通过的导出向导工具导出后,就剩下两种数据类型:Hobject  HTuple.一个是图像  一个是数据. 头文件有定义这两个C++类: C:\Program Fil ...

  7. 【吐血整理】Python 常用的几种高阶函数和简单的迭代函数

    目录 一.all() 函数--判断可迭代对象中的元素是否全为True 二.any() 函数--判断可迭代对象是否全为假值 三.filter() 函数--通过指定条件过滤序列 四.map() 函数--- ...

  8. python包含多个元组的元组_Python数据结构(元组,列表,字典)

    Python内置了 几种数据结构,元组,列表 字典 1.元组 元组可以由不同的元素组成,所有元素通过圆括号(  )包含起来,并通过逗号","隔开.如变量名 = (元素1,元素2,. ...

  9. C#框架提供的几种数据结构对单值查找的效率比较

    做分词组件时,有网友提出采用Hashtable 数据结构查找字符串效率较低,建议改为Dictionary,其理由是采用Hashtable 时Key值是object 会触发装箱和拆箱动作,一直对这种说法 ...

  10. python 通用数据库类型_Python开发基础之Python常用的数据类型

    博文大纲 一.Python介绍 二.Python的变量 三.Python常用的数据类型 1.数字 2.字符串 3.元组 4.列表 5.字典 一.Python介绍 Python是一种动态解释型的编程语言 ...

最新文章

  1. sed和awk有什么区别? [关闭]
  2. 通过远程桌面操作程序出现hook cannot be created(SendKeys语句错误)的解决
  3. u3d:强大的dotween。使用dotween处理延时问题,最最最最简单的办法
  4. Linux shell控制台改变显示前缀
  5. 《网易编程题》藏宝图
  6. ERP软件的追加开发环节存在特殊价值
  7. php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  8. UVa 10394-Twin Primes
  9. SQL建表语句转换为Excel表格
  10. 利用可道云kodexplorer一键部署私有云!路由器免费变NAS!
  11. 计算机选择题在线,计算机基础知识选择题题库全集.doc
  12. 记一次阿里巴巴电话面试题
  13. c语言求定积分的程序,C语言求定积分
  14. Google 分析 SDK 之渠道统计
  15. composer安装fxp/composer-asset-plugin
  16. vue实现带图片的标题栏
  17. OSChina 周三乱弹——最近你炒股了吗?
  18. 怎么用U盘安装Linux显卡驱动,关于Ubuntu 10.10的SIS671系列显卡驱动以及U盘安装解决办法...
  19. 华为语音解锁设置_华为设置语音服务功能
  20. 2021-09-10 网安实验-XCTF真题实战之密码学

热门文章

  1. Master Reactor Manager Worker TaskWorker(Task)
  2. js复制隐藏域中的文字
  3. openssl 升级
  4. mybatis_Mapped Statements collection already contains value
  5. VS2005无法调试,绑定句柄无效问题的解决方法
  6. CSS3属性——(二)
  7. 【[TJOI2014]上升子序列】
  8. Android开机键失灵启动手机的解决的方法
  9. POJ1061 青蛙的约会 扩展欧几里得
  10. 安装vmware tools 使用hgfs共享文件一波三折