# encoding: utf-8
"""
author: Leo
date: 2017-6-2
"""
import copy
lang = 'python'
print(lang.index('y'))
lst = ['python', 'java', 'c++']
print(lst.index('java'))
print(lst[-1: -3])
print(lst[-3: -1])
alst = [1, 2, 3, 4, 5]
# 反转(反转过来原来的值是不变的。)
print(alst[:: 1])
# 反转的推荐使用方法
print(list(reversed(alst)))
# 添加列表
a = ['good', 'python', 'I']
a.append('like') # 添加的位置总是在最后一位。
print(a)
# 将一个列表添加到另一个列表中extend()来实现,extend函数需要的参数就是iterable类型的对象
la = [1, 2, 3]
lb = ['jin', 'jiao']
la.extend(lb)
print(la)
# 如果是字符串将会将它拆开
b = 'abc'
la.extend(b)
print(la)
# 如何判断一个对象是否是可迭代的呢?
astr = 'python'
# 用内建函数hasattr()判断一个字符串是否可迭代的。
print(hasattr(astr, '__iter__'))
# 列表的一个重要的特性,列表是可以修改的,这种修改,不是复制一个新的,而是在原地进行修改。
# count是数一数某一个元素在列表出现的次数
print(astr.count('p'))
# 想列表插入元素
la.insert(0, 'yin')
print(la)
# 元祖
t = 1, '23', [123, 'abc'], ('python', 'learn')
print(t)
# print(help(t))
# 特别提醒如果元祖中只有一个元素的时候,应该在元素后面的加一个半角的英文逗号
a = (2,)
print(type(a))
# 元祖和列表的互相转换,分别使用list()和tuple()实现
tls = list(t)
print(tls)
# 定义两个键,共享一个值
website = {}.fromkeys(('third', 'forth'), 'facebook')
print(website)
# 注意,字典中的'键',必须是不可变对象,'值'可是任意类型的对象
dd = {(1, 2): 1}
# dd1 = {[1, 2]: 1} # 这个会出错
# 浅拷贝与深拷贝
x = {'lang': ['python', 'java'], 'name': 'jin'}
z = copy.deepcopy(x)
print(z)
print(id(x['lang']))
print(id(z['lang']))
# 清空字典中的所有元素的操作
a = {'name': 'jinjiao'}
a.clear()
print(a)
# 获取字典中某个键的值
print(a.get('name'))
sequence = [12, 23, 34, 45, 67, 78]
for index, item in enumerate(sequence):
print index, item
print(range(0, -9, -1))
# 所有的序列类型对象都能够用for循环
name_dict = {'name': 'jinjioa', 'age': 23}
for i in name_dict:
print i, '--->', name_dict[i]
for k, v in name_dict.items():
print k, v