#
# 列表与元组
#
#2-1
edward = ["Jone", 12] #一个列表 含有N个元素
print edward
print edward[1] # 可以当做数组来访问其中元素;左边查找开始为0
print edward[-1] # 右边查找
edward2 = ["Lily", 13]
database = [edward, edward2] # 很多个列表组成大列表
print database
#2-2
#索引
_str = "hello"
print _str[0]
print "hello"[0]
#year = raw_input("this is year:")[0]
#print year
#ep:
# 根据给定的年月日以数字形式打印出日期
months = [
'January',
'February',
'Match',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
]
# 以1~31数字作为结尾列表
ending = ['st', 'nd', 'rd'] + 17 *['th'] \
+ ['st', 'nd', 'rd'] + 7 *['th'] \
+ ['st']
year =2015 #raw_input('Year:')
month =3 #raw_input('moth:')
day =5 #raw_input('day:')
month_number = int(month)
day_number = int(day)
month_name = months[month_number - 1] #[]之前必须有列表变量,不然就变成【元组】了
ordinal = str(day) + ending[day_number - 1]
print month_name + ' ' + ordinal + ' ,' + str(year)
#2-3 分片
self_name = 'www.python.org//downleossss'
print self_name[3:9] #分片是左关右开,打印字段是【3~8】
print self_name[3: -4]
print self_name[:] #打印全部
print self_name[3:] #从3位置到整个字符串
print self_name[3:-1] #不会打印最后一个字符,需要用上面
print self_name[-3:0] # 冒号 左边 必须比 右边 位置来得大,不然找不到
print self_name[3: 0]
print self_name[-7: -1]
print "show :" + self_name[2: 100] # 可以越界,不会报错
#ep
#分片示例
url = 'http://www.somthing.org'
domain = url[11: -4]
print 'Domain name ' + domain
#分片默认都是 1位1位的查找,可以指定长度查找 【开始点:结束点:长度】
number = [11, 14, 122, 13455, 3445, 9837]
print number[0: 6 : 3] #最后一个冒号,所填的数值 指长度
#(既 从第一个开始越过N个获取下一个元素
print number[: :-2]
print number[6: 0: -2] # 需要 确保 =======开始点 < 结束点 且 步长为负数 才行=======
print number[0: 6 : -2] # 一无所获
print number[3: : 2]
print number[ : 3: 2]
#2-4 列表相加; 组合成新的列表,不会修改旧的列表
print months + ending #必须相同类型的列表,比如 字符串列表 与 数字列表就不能相加
print "show list :"
print months #无任何更新
#2-5 列表乘法
print self_name * 5 # 多个字符串相连在一起
table = ['a','b']
print table * 3 # 相同 列表组成一个列表
table = [] * 10 # 乘10次 依旧无数据
print table
table = [None] * 10 # None迫使 列表占据空间
print table
#ep
#序列 * 乘法示例 * 字符串
sentence = " he is I like to boy!!"
sentence_width = 80
text_width = len(sentence) # len 列表 长度函数
box_width = text_width + 6
left_margin = (sentence_width - box_width) // 2
print
print ' ' *left_margin + '+' + '-' *(box_width - 2) + '+'
print ' ' *left_margin + '|' +' ' * text_width + '|'
print ' ' *left_margin + '|' + sentence + '|'
print ' ' *left_margin + '|' +' ' * text_width + '|'
print ' ' *left_margin + '+' + '-' *(box_width - 2) + '+'
print
#2-6 成员资格
print 'boy' in sentence # in 运算符 用于检测 左侧内容 是否在 右侧内容里面
print 'gril' in sentence
print 'May' in months
print 122 in months
#ep
#示例
database = [
['Lily', 111],
['Lucy', 222],
['Jone', 333],
['Cacy', 444],
]
if ['Jone', 333] in database:\
print "it is true"
#2-7列表常用函数
table = [15, 265 , 789, 456, 9998, 665, 448, 111, 5525, 668]
print len(table) # 获取列表元素个数
print max(table) # 获取最大值
print min(table) # 获取最小值
print list('hello') # 拆分为列表
print list(table)
#table.append('add Data') # 添加一个元素
#print table
#table.append(list('hh')) #添加一个列表
#print table
print table.count(15) # 显示重复元素的次数
table.extend([1,3, 45, 5, 6, 78, 7]) #将一个列表中所有元素添加到当前列表中
print table
print table.index(1) # 搜索这个元素在这个列表中 索引ID
#print table.index(100) # 不存在列表中,则会报错
print table.insert(5, 100) # 指定位置插入一个数据
print table.insert(100, 5555) # 位置越界,则插入到最后
print table
reomve_num = table.pop() # 删除最后一个元素,并返回出来
print table
print reomve_num
table.remove(5525) # 没有这个元素 会报错
print table
table.reverse() #列表方向存放
print table
#table.sort() # 默认排序,从小到大
#print table
copy_table = sorted(table) #排序后返回 一个列表副本 sorted
print copy_table
copy_table = table[:]
copy_table.sort(cmp) # sort 可以传递函数进行判断
print "sort(cmp) : " + repr(cmp(1, 2))
print copy_table
copy_table = [ "lily", "lucy","jim", " yang tuo"] # 字符串从短到长排序
copy_table.sort(key = len)
print copy_table
copy_table.sort(reverse = True) # 方向排序 False正向, True 反向
print copy_table
#2-9列表操作
#修改元素
table[2] = "Lucy"
print table
#删除元素
del table[1]
print table
#分片实现 列表元素 替换,插入,清空
table[1:] = list('LiLy')
print table
table[1:1] = [458, 447, 998]
print table
table[3:] = []
print table
# 2 -10
#元组
table_ = (1, 2, 3,)
print table_
print table_[1]
print (23,) #一个元素时必须有逗号
print 4 *(23,)
print tuple('123456') #与list相同
#print table_[2] = 20 元组不允许赋值,改正值