Python第二篇详细了解列表,字符串,文件操作
1.列表操作升级
a.列表合并
names1=["a","b","c"] names2=["1","2","3"] names1.extend(names2) print(names1) #['a', 'b', 'c', '1', '2', '3']
b.列表嵌套
这其实就是java中的二维数组了
names1=["a","b","c"] names2=["1","2","3"] names2.append(["A","B"]) names1.extend(names2) print(names1) #['a', 'b', 'c', '1', '2', '3', ['A', 'B']]
如果想取到A可以names2[3][0]这都和java一样的
c.清空clear()
names1.clear() #结果就是[]
d.删除pop()并返回删除的元素
names1=["a","b","c"] names2=["1","2","3"] names2.append(["A","B"]) names1.extend(names2) print(names1.pop()) #['A', 'B']
pop()默认删除最后一个元素,当然用names1.pop(index)可以删除指定位置元素,这里与del names1[index]有区别在于del不会返回任何内容
e.删除remove(value)删除
删除列表中的第一个value,如果不存在会报错
f.查index和count
names1.index("A")返回A出现的第一个索引位置,不存在会报错,一般先if "A" in names1 :names1.index("A")
names1=["a","b","c"] if "a" in names1 : print(names1.index("a")) #结果0
names1.count("A")返回A在列表中出现的次数
g.切片[start:end]前包后不包
names1=["a","b","c","d","e","f"] print(names1[2:5]) #['c', 'd', 'e'],从index2取到index4
这个切片有很多注意事项,因为不包含最后一个index所以想取出最后一个值用names1[1:]end不写表示从start取到最后,同理,左边的start也是可以不写的,如果是names[:]表示取所有
start和end都可以用负数,表示倒数第一个到倒数第几个,但是end仍然是不包括在内的
h.步长[start:end:step]
names1=["a","b","c","d","e","f","g"] print(names1[-1::-1]) #['g', 'f', 'e', 'd', 'c', 'b', 'a'](负一可以省略)
步长控制start到end之间每次跳几个元素切片,如果start和end是反着取的并且让step为-1可以实现切片+倒叙,上例子中如果是names1[-2:-5:-1]取出来的就是f,e,d部分倒叙切片
步长的正负表示从start到end是从左往右还是从右往左,如果start到end的方向和正负是相反的,则取出值为空,比如[-1::1]是想从最后一个取到第一个,方向是从左往右,但是step却是正,则取值为空
说到这里不得不说python真的很人性化,不仅列表可以用步长实现翻转,就连字符串也可以
names="迪丽热巴" print(names[::-1]) #巴热丽迪
值得注意的是切片指的是切出来的新列表是怎样的,对原列表是没有影响的
i.列表的翻转reverse()和排序sort()
这其实没什么好说的。。。直接用就完了,sort的时候要求列表中元素都是str类型或者都是数字类型,否则会报错
j.列表循环
for name in names:
print(name)
k.列表长度len(names)
l.元组names=("A","B")
元组和列表用法一样,不过元组只读,不可修改,没有删除,增加,修改操作的方法。常用在你自己的接口中某些不想让别人修改的内容,或者说只读保护的内容,比如word中的只读模式等
但是如果元组里面有可变元素,那这个可变元素可以修改,比如name=("a","b",["c","d"])那么可以name[2][1]="E"
m.列表的复制
names1=names.copy() 两个列表没有任何关系
n.列表推导式
下面这种可以得到一个2,4,6,8,10的偶数列表
nums=[i for i in range(10) if i%2==0] print(nums)