python 日常学习2-------列表和元组

-------------------------------列表增删改查-----------------------------------
li = ['散光','柱子','钢盔','发哥','asan']
''''''
#列表最后面添加
li.append('峰哥')

#选择在某个位置添加
li.insert(1,'小明')

#迭代添加,也是添加到最后。下面例子分别把二和哥添加到列表中
li.extend('二哥')

#删, 按照索引删除,pop有返回值,是其删除的元素,
li.pop(1) #索引里什么都不写,默认删除最后一个


#按照元素删除
li.remove('asan')


#清空列表
#li.clear()


#删除这个列表
#del li

#切片删除,例如删除前三个。
#del li[0:3]

#改  1.找到这个位置,直接改。
li[0] = 'sanguang'

#切片修改,后面修改内容随便填写,会迭代的改。如下例子。
li[0:2]= '二哥云姐'

#查 方式1.for循环
#查 方式2,切片
print(li[0:2])

#公共方法:
#列表长度
L = len(li)

#某个元素出现次数
i = li.count('')
print(i)

#找到元素索引,如果没有则报错
print(li.index('钢盔'))
print(li)

#列表排序.sort默认正序排序从小到大。
ls = [1,4,3,66,32]

#ls.sort()
ls.sort(reverse=True)#倒序,从大到小
#f反转
print(ls)
ls.reverse()
print(ls)
View Code

 


#------------------------------------列表---------------------------------------

names = ['a','b','c','d']

#-------------------------------------列表插入数据俩种方式:-----------------------
names.append('f')
print('append添加f',names)
#数据结果: append添加f ['a', 'b', 'c', 'd', 'f']

names.insert(1,'g')
print('insert指定位置添加g',names)
#输出结果['a', 'g', 'b', 'c', 'd', 'f']

#---------------------------------------列表改值---------------------------------
names[2] = 'r'
print('列表第三个数据修改为r:',names)
#输出结果: 列表第三个数据修改为r: ['a', 'g', 'r', 'c', 'd', 'f']
#----------------------------------------删除--------------------------
names.remove('r')
print('删除r后的数组',names)
#输出结果:删除r后的数组 ['a', 'g', 'c', 'd', 'f']
del names[1]
print('删除列表第二个数据',names)
#输出结果:删除列表第二个数据 ['a', 'c', 'd', 'f']

# 该方法输入下标。默认删除最后一个,输入下标等同于del 方法。
names.pop()
print('默认删除最后一个数据',names)
#输出结果:默认删除最后一个数据 ['a', 'c', 'd']
#--------------------------------------查找数据在列表中的位置-----------------
names.index('c')
# names.count('')查找列表中相同元素有几个。
#----------------------------------列表的浅copy和深copy------------------
#想要完全复制,引入模块,import copy    用copy.deepcopy方法

import copy
names = ['a','b',['h','l'],'d','e']
name3 = names.copy()
#想要完全复制,引入模块,import copy 用copy.deepcopy方法
name4 = copy.deepcopy(names)

names[1] = 'wang'
print('names = ',names)
print('浅name3 = ',name3)
print('深copyname4 = ',name4)
# 输出结果如下:
names =  ['a', 'wang', ['h', 'l'], 'd', 'e']
浅name3 =  ['a', 'b', ['h', 'l'], 'd', 'e']
深copyname4 =  ['a', 'b', ['h', 'l'], 'd', 'e']
由此可见,俩种拷贝方式,都不会因为列表names的第一层数据改变而改变
改变names列表里嵌套的列表内容
names[2][0] ='H'
print('names = ',names)
print('浅name3 = ',name3)
print('深copyname4 = ',name4)
#输出结果如下
names =  ['a', 'wang', ['H', 'l'], 'd', 'e']
浅name3 =  ['a', 'b', ['H', 'l'], 'd', 'e']
深copyname4 =  ['a', 'b', ['h', 'l'], 'd', 'e']
由此可见,name3列表会跟随names列表发生变化,name4不会,因为copy是浅copy,
name3只copy了names列表的第一层,其中嵌套的列表没有拷贝,names修改其中内容时,
name3也会随着改变,深拷贝是完全copy,不会因names的变化发生变化
浅copy只是引用数据
# ----------------------------------------------列表切片------------------

names = ['a','b','c','d']
print('切片1:3结果',names[1:3])
# 输出结果 ['b', 'c']
print('切片0:3结果',names[0:3])
#输出结果:切片0:3结果 ['a', 'b', 'c']
#创建一个列表
L = list(range(100))
print("取前10", L[: 10])
#输出结果:取前10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print("80--90之间", L[-20:-10])  
#输出结果:80--90之间 [80, 81, 82, 83, 84, 85, 86, 87, 88, 89]

print("80---90之间", L[80:90])         
#输出结果:80---90之间 [80, 81, 82, 83, 84, 85, 86, 87, 88, 89]

print("前10个数,每俩个取一个", L[:10:2])   
#输出结果:前10个数,每俩个取一个 [0, 2, 4, 6, 8]

print("所有数,每5个取一个", L[::5])      
#输出结果:所有数,每5个取一个 [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

#生成器
Listd = [x * x for x in range(1, 11)]
print(Listd)           #输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# ------------运用列表生成式去掉列表中的非字符串类型,并把字符串首字母换成小写---------------------
listlx = ["Hello", "World", 18, "Apple"]
xlist = [x.lower() for x in listlx if isinstance(x, str) == True]
print(xlist)
#输出结果:['hello', 'world', 'apple']


---------------------------------------------------元组tuple------------------------------------------------
元祖也是一组数据,可以看成只读列表,只要一旦创建,便不能再修改,只有count和index俩个方法,




--------------------------------------------元组和列表的补充---------------------------------------------------

 列表的嵌套

li = ['taibai','武藤兰','陈浩',['bill','柱子',89],23]

#输出藤
str = li[1]
n = str[1]
print(n)

# taibai T 大写
str1 = li[0]
name = str1.capitalize()
li[0] = name
print(li)

#找到陈浩,改成陈日天,放回去
tname = li[2]
li[2]=tname.replace('','日天')
print(li)

#列表转换成字符串, jion
lb = ['taibai','武藤兰','陈浩bill','柱子']
ss = ''.join(lb)
print('ss的内容是',ss)

#str 转换成 列表 用split()
xlist = ss.split()
print(xlist)

#元祖 ---只读列表,可循环,可切片
# 儿子不能改,孙子可以改.例如,可修改列表中的zhuzi首字母大写,或者添加对象

tu = (1,2,3,'sanguang',[2,3,4,'zhuzi'],'egon')

tu[4][3] = tu[4][3].capitalize()
tu[4][3] = 'sb'
print(tu)

#输出 3-9
# for i in range(3,10):
#     print(i)
#
#输出0-9
# for i in range(10):
#     print(i)
#输出 3的倍数
for i in range(0,10,3):
    print(i)

#倒序输出
for i in range(10,0,-2):
    print(i)

#循环输出列表内容,遇到列表也输出其中的内容
listd = [1,2,3,4,'ale',['sanguang','钢盔','发哥'],'zhuzi']

for i in listd:
    if type(i).__name__ =='list':
        for n  in i:
            print(n)
    else:
        print(i)
View Code

 

 

posted @ 2017-11-09 12:23  向日葵的部落  阅读(167)  评论(0编辑  收藏  举报