Data Structure

ds_using_list.py

# This is my shopping list

# list is mutable but string is immutable
# create a list using list = []
# at least has append() sort() method
# want to see more,please help(list) 
# list is a sequence 


shoplist = ['apple','mango','carrot','banana']
print('I have', len(shoplist), 'items to purchase.')
print('These items are:',end=' ')
for item in shoplist:
    print(item, end=' ')

print('\nI also have to buy rice.')
shoplist.append('rice')
print('Now my shopping list is',shoplist)

print('I will sort my list now')
shoplist.sort()
print('Sorted shop list is',shoplist)

print('The first item I will buy is', shoplist[0])

olditem = shoplist[0]   # list取元素是用list[Number]
del shoplist[0]

print('I bought the', olditem)
print('My shop list is now',shoplist)

ds_using_tuple.py

# Tuple 可以近似看做列表,但是元组功能没有列表丰富
# 元组类似于字符串 所以 Tuple is immutable
# create a tuple tuple = ()
# tuple is a sequence

zoo = ('python','elephant','penguin')
print('Number of animals in the zoo is', len(zoo))

new_zoo = ('monkey','camel',zoo)
print('Number of cages in the new zoo is', len(new_zoo))
print('All animals in new zoo are', new_zoo)
print('Animals brought from old zoo are',new_zoo[2])    #Tuple取元素也是 tuple[Number]
print('Last animal brought from old zoo is',new_zoo[2][2])
print('Number of animals in the new zoo is',len(new_zoo)-1+len(new_zoo[2]))

# 空的元组由一堆圆括号构成 myempty = ()
# 但是只拥有一个项目的元组 必须在第一个(唯一一个)项目后面加上一个逗号
# 这是为了区别这到底是一个元组 还是 只是一个被括号所环绕的对象 
# example:singleton = (2,) sigleton is a tuple object
#          singleton = (2) sigleton is a int object

ds_using_dict.py

# 字典将键值(Keys)与值(Values)联系到一起
# 键值必须是唯一的,而且键值必须是不可变(immutable)的对象(str)
# 值可以是可变或者不可变的对象
# create a dictionary dict = {key1:value1,key2:value2}
# 成对的键值-值不会排序
# 字典是属于dict类下的实例
# 字典不是序列
# 字典只能根据key来确定

# ab作为Address Book缩写
ab = {
    'Swaroop':'swaroop@swaroopch.com',
    'Larry':'larry@wall.org',
    'Matsumoto':'matz@ruby-lang.org',
    'Spammer':'spammer@hotmail.com'
}

# use key to find its value
print("Swaroop's address is",ab['Swaroop'])

# delete a pair of key-value
del ab['Spammer']

print('\nThere are {} contacts in the address-book\n'.format(len(ab)))

for name,address in ab.items():     #items() 返回一个包含元组的列表
    print('Contact {} at {}'.format(name,address))

# add a pair of key-value
ab['Guido'] = 'guido@python.org'

if 'Guido' in ab:       #in运算符 可以来检查某对键值-值配对是否存在
    print("\nGuido's address is", ab['Guido'])
    
# 了解更多的有关dict类的方法 help(dict)
# 其实在定义函数的参数列表时,就是指定了键值-值配对

ds_seq.py

# 列表(list)  元组(tuple)  字符串(str)  都可以看做是序列(Sequence)的某种表现形式

# 序列(Sequence)的主要功能是资格测试 也就是 in and not in 和 索引操作
# 序列还有切片(Slicing)运算符  它使我们能够获得序列的一部分


shoplist = ['apple','mango','carrot','banana']
name = 'swaroop'

# 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])
print('Character 0 is', name[0])
                                     
# Slicing on a list
# 切片中冒号(:)是必须的,但是数字是可选的
# 第一个数字是切片开始的位置,第二个数字是切片结束的位置。
# 如果第一个数字没有指定,Python将会从序列起始处开始操作
# 如果第二个数字留空,Python将会在序列的末尾结束操作
# 切片操作将包括起始位置,但不包括结束位置
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])    #不包括-1
print('Item start to end is', shoplist[:])

# Slice on a character
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[:])

# Slice 第三个参数是Step 默认为1
print(shoplist[::1])
print(shoplist[::2])    #得到第0 2 4 ...个项目
print(shoplist[::3])    #得到第0 3 6 ...个项目
print(shoplist[::-1])   #得到第-1 -2 -3 ...个项目,即逆序了
print(shoplist[::-2])   #得到第-1 -3 -5 ...个项目
print(shoplist[::-3])   #得到第-1 -4 -7 ...个项目

ds_set.py

# 集合(Set)是无序容器(Collection)
# 当容器中的项目是否存在比起次序,即出现次数更重要的我们就会使用集合
# 集合可以测试某些对象的资格 检查他们是否是其他集合的子集
# 找到两个集合的交集等

bri = set(['brazil','russia','india'])
print('Is India in bri?', 'india' in bri)
print('Is usa in bri?', 'usa' in bri)

bric = bri.copy()
bric.add('China')
print('Is bric the superset of bri?',bric.issuperset(bri))

bri.remove('russia')
# bri & bric 
print("bri and bric 's intersection is", bri.intersection(bric))

ds_reference.py

# 创建了一个对象以后并将其分配给某个变量后 变量会查阅Refer该对象
# 但是变量不会代表对象本身 
# 变量名指向计算机内存中存储了该对象的那一部分
# 即将名称绑定Binding给那个对象


print('Simple Assignment')
shoplist = ['apple', 'mango', 'carrot', 'banana']

# mylist 只是指向同一对象的另一种名称
mylist = shoplist

# 将第一项删掉
del shoplist[0]

print('shoplist is', shoplist)
print('mylist is', mylist)
# shoplist 和 mylist 二者都没有了apple
# 因此我们可以确定它们指向了同一个对象

print('Copy by making a full slice')
# 通过切片来制作一份副本
mylist = shoplist[:]

#再次删除第一个项目
del mylist[0]

print('shoplist is', shoplist)
print('mylist is', mylist)
# 现在他们出现了不同
# 因此如果你希望创建一份序列的副本,那么必须用切片操作。
# 仅仅将一个变量名赋予给另一个名称,那么它们都将查阅同一个对象。

ds_str_method.py

# str更多方法可以help(str)

name = 'Swaroop'

if name.startswith('Swa'):  #startswith()用于查找字符串是否以给定的字符串内容开头
    print('Yes, the string starts with "Swa"')

if 'a' in name:     #in运算符用以检查给定的字符串是否是查询的字符串中的一部分
    print('Yes, it contains the string "a"')
    
if name.find('war') != -1:  #find()用于定位字符换中给定的子字符串的位置
                            #如果找不到,则返回-1。
    print('Yes, it contains the string "war"')

delimiter = '_*_'
mylist = ['Brazil','Russia','India','China']
print(delimiter.join(mylist))   #join()用以联结序列中的项目,其中字符串会作为每一项目间的
                                #分隔符,并以此返回一串更大的字符串
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容