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