python学习之路-第五天-python的数据结构

数据结构

1. 列表

  • 例子:
#!/usr/bin/python
# Filename: using_list.py

# This is my shopping list
shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]

print ‘I have‘, len(shoplist),‘items to purchase.‘

print ‘These items are:‘, # Notice the comma at end of the line
for item in shoplist:
    print item,

print ‘\nI also have to buy rice.‘
shoplist.append(‘rice‘)
print ‘My shopping list is now‘, shoplist

print ‘I will sort my list now‘
shoplist.sort()
print ‘Sorted shopping list is‘, shoplist

print ‘The first item I will buy is‘, shoplist[0]
olditem = shoplist[0]
del shoplist[0]
print ‘I bought the‘, olditem
print ‘My shopping list is now‘, shoplist
  • 结果
$ python using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘, ‘rice‘]
I will sort my list now
Sorted shopping list is [‘apple‘, ‘banana‘, ‘carrot‘, ‘mango‘, ‘rice‘]
The first item I will buy is apple
I bought the apple
My shopping list is now [‘banana‘, ‘carrot‘, ‘mango‘, ‘rice‘]
  • 列表中可以添加任意种类的对象
  • for in实现了列表的遍历
  • append方法可以添加新的对象
  • sort方法可以对列表排序,是对列表本身的修改
  • del方法后面接上列表中的任意位置,可以删除该对象

2. 元组

  • 元组和列表的形式差不多,不过元组中的对象是不允许修改的
  • 含有0或1个对象的元组比较特殊:一个空的元组由一对空的圆括号组成,如myempty = ()。然而,含有单个元素的元组就不那么简单了。你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton = (2 , )。
  • 元组通常用于打印语句:
  • 例子:
#!/usr/bin/python
# Filename: print_tuple.py

age = 22
name = ‘Swaroop‘

print ‘%s is %d years old‘ % (name, age)
print ‘Why is %s playing with that python?‘ % name
$ python print_tuple.py
Swaroop is 22 years old
Why is Swaroop playing with that python?
  • 与c中的打印语句类似,不过在python中不用逗号分隔,直接用%定制
  • 在第二个print语句中,我们使用了一个定制,后面跟着%符号后的单个项目——没有圆括号。这只在字符串中只有一个定制的时候有效。

3. 字典

  • 字典其实就是key-value对
  • 例子:
#!/usr/bin/python
# Filename: using_dict.py

# ‘ab‘ is short for ‘a‘ddress‘b‘ook

ab = {       ‘Swaroop‘   : ‘[email protected]‘,
             ‘Larry‘     : ‘[email protected]‘,
             ‘Matsumoto‘ : ‘[email protected]‘,
             ‘Spammer‘   : ‘[email protected]‘
     }

print "Swaroop‘s address is %s" % ab[‘Swaroop‘]

# Adding a key/value pair
ab[‘Guido‘] = ‘[email protected]‘

# Deleting a key/value pair
del ab[‘Spammer‘]

print ‘\nThere are %d contacts in the address-book\n‘ % len(ab)
for name, address in ab.items():
    print ‘Contact %s at %s‘ % (name, address)

if ‘Guido‘ in ab: # OR ab.has_key(‘Guido‘)
    print "\nGuido‘s address is %s" % ab[‘Guido‘]
  • 结果:
$ python using_dict.py
Swaroop‘s address is [email protected]

There are 4 contacts in the address-book

Contact Swaroop at [email protected]
Contact Matsumoto at [email protected]
Contact Larry at [email protected]
Contact Guido at [email protected]

Guido‘s address is [email protected]
  • items方法用于返回一个元组的列表,每个列表中都有键和值,如上面的for循环遍历
  • in方法或者has_key方法可以检验这个键是否存在

序列

上面列表,元组,字典都是序列,都有序列的各种方法,序列就是包括索引操作和切片操作;

例子:

#!/usr/bin/python
# Filename: seq.py

shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]

# Indexing or ‘Subscription‘ operation
print ‘Item 0 is‘, shoplist[0]
print ‘Item 1 is‘, shoplist[1]
print ‘Item 2 is‘, shoplist[2]
print ‘Item 3 is‘, shoplist[3]
print ‘Item -1 is‘, shoplist[-1]
print ‘Item -2 is‘, shoplist[-2]

# Slicing on a list
print ‘Item 1 to 3 is‘, shoplist[1:3]
print ‘Item 2 to end is‘, shoplist[2:]
print ‘Item 1 to -1 is‘, shoplist[1:-1]
print ‘Item start to end is‘, shoplist[:]

# Slicing on a string
name = ‘swaroop‘
print ‘characters 1 to 3 is‘, name[1:3]
print ‘characters 2 to end is‘, name[2:]
print ‘characters 1 to -1 is‘, name[1:-1]
print ‘characters start to end is‘, name[:]
$ python seq.py
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is [‘mango‘, ‘carrot‘]
Item 2 to end is [‘carrot‘, ‘banana‘]
Item 1 to -1 is [‘mango‘, ‘carrot‘]
Item start to end is [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
  • 索引不必多说,下标从0开始,-1表示从右向左数1个,(其实我记忆的话,序列的长度加上这个值,就是他的真实下标)
  • 切片符号‘:‘为标志,包括第一个操作数,不包括第二个,也就是左闭右开
  • 左操作数为空,从开始位置开始,右操作数为空,到结束位置结束

参考

下面是个例子:

#!/usr/bin/python
# Filename: reference.py

print ‘Simple Assignment‘
shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]
mylist = shoplist # mylist is just another name pointing to the same object!

del shoplist[0]

print ‘shoplist is‘, shoplist
print ‘mylist is‘, mylist
# notice that both shoplist and mylist both print the same list without
# the ‘apple‘ confirming that they point to the same object

print ‘Copy by making a full slice‘
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item

print ‘shoplist is‘, shoplist
print ‘mylist is‘, mylist
# notice that now the two lists are different
$ python reference.py
Simple Assignment
shoplist is [‘mango‘, ‘carrot‘, ‘banana‘]
mylist is [‘mango‘, ‘carrot‘, ‘banana‘]
Copy by making a full slice
shoplist is [‘mango‘, ‘carrot‘, ‘banana‘]
mylist is [‘carrot‘, ‘banana‘]

从上面的注释中我们已经能看出来,直接用=连接的赋值相当于直接拷贝的地址,原来序列改变,相应赋值的序列也会改变,但是赋值的时候用序列的切片操作赋值,改变原序列后不会影响到赋值的序列

时间: 2024-10-09 13:43:21

python学习之路-第五天-python的数据结构的相关文章

Python学习之路(2)——Python种类介绍

Python的种类 Cpython    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行. IronPython    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行.(与Jython类似) PyPy(特殊) 

python学习之路 第五天

1.装饰器: #!/usr/bin/env python3 user_status = False #用户登录了就把这个改成True def login(auth_type): #把要执行的模块从这里传进来 def auth(func): def inner(*args,**kwargs):#再定义一层函数 if auth_type == "qq": _username = "tom" #假装这是DB里存的用户信息 _password = "abc123&

python学习之路(1)--python简介

首先,本人也是刚入门python没多久,没有老鸟的经验和技能,大佬勿喷,以下所有皆是本人自己对python的理解 python,是一种解释型(高级)的,面向对象的,带有动态语义的高级程序设计的开源语言.1989年,Guido von Rossum(荷兰人)人称龟叔,他在圣诞节时因为无聊而开发出来的,详细的python发展史介绍可以百度或Google,已经很多了,不再赘述. python是从2015年在国内火起来,之前为什么不火,因为国内情况一直稍落于外国强国,并且在刚开始的python其实很多缺

Python高手之路【五】python基础之正则表达式

下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print(result) 字符^:匹配以什么开头 import re st = 'python' result = re.findall('^py',st) print(result) 字符$:匹配以什么结尾 import re st = 'python' result = re.findall('n$',s

python学习之路-第七天-python面向对象编程简介

面向对象编程 在python中,同样是类和对象作为重要的组成部分. 而且在python中基本数据类型如int都是有封装类的,都有自己的方法,应该是和java里面的Integer类似吧 类包括域和方法:域也就是类或对象中的变量,方法就是类里面声明的函数 self关键字: 相当于java中的this,下面是个例子: #!/usr/bin/python # Filename: method.py class Person: def sayHi(self): print 'Hello, how are

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

Python 学习之路(二)

Python 学习之路(二) 以下所用的是Python 3.6 一.条件语句 简单判断 1 if 判断条件: 2 执行语句-- 3 else: 4 执行语句-- 复杂判断 1 if 判断条件1: 2 执行语句1-- 3 elif 判断条件2: 4 执行语句2-- 5 elif 判断条件3: 6 执行语句3-- 7 else: 8 执行语句4-- 二.循环语句 2.1 while语句 和其他语言一样,不同的是多了else语句.在 python 中,while - else 在循环条件为 false

Python学习之路

Python学习之路 目录 Python学习之路[第一篇]:流程控制,用户交互,语法要求,变量,字符,注释,模块导入的使用 Python学习之路[第二篇]:文件,字符串,列表,元组,字典,集合的使用 更新中...

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()