美文网首页
Data Structure

Data Structure

作者: Takkum | 来源:发表于2017-12-04 21:43 被阅读0次

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()用以联结序列中的项目,其中字符串会作为每一项目间的
                                #分隔符,并以此返回一串更大的字符串

相关文章

网友评论

      本文标题:Data Structure

      本文链接:https://www.haomeiwen.com/subject/uvyfixtx.html