python基础——数据类型(列表)

列表list,可以包含字符串和数字,使用[]定义。访问第一元素是[0]。
l = ['abc', 'def', 'ghi', 123]
print(l)
print(len(l))
print(l[0])
print(l[1])
print(l[-2])
print(l[1:3]) #从第二位开始,到第三位,顾首不顾尾。
print(l[:3]) #从开头开始,到第三位。
print(l[1:]) #从第二位开始,到最后。
print(l[::2]) #步长为2,相当于[0:-1:2]

赋值

l[1] = 'hehe'
l[1:] = ['apple', 'banana']
l[2] = [123, 345, 456]
l[1:] = [123, 234, 345, 456, 567]

追加
l = [ "Drake", "Derp", "Derek", "Dominique" ]
l.append("Victoria") #追加列表项
l.insert(2,"ss") #把"ss"添加在第三位
l = l + ["Tom"]  #每次+都开辟新的内存空间,效率低
m = [1,2,3]
l.extend(m) #m列表追加到l列表之后。
删除
l.remove("Derp") #删除列表项
l.pop(0)  #删除l[0]
del l[0] #删除l[0]
del l[1:3]

复制
l=["a","b","c"]
l[1]=[1,2,3]
tmp=l.copy() #浅复制,只复制第一层,不复制l[1]元素内的列表,只复制地址。
import copy
tmp1=copy.deepcopy(l) #深复制,全部复制。
l = ["a","b","c"]
l[1] = [1,2,3]
print(l)
import copy
tmp=copy.deepcopy(l)
l[1][1]=[4,5]
print(l)
print(tmp)

 


排序
m = [ "Drake", "Derp", "Derek", "Dominique" ]
m.sort() #排序
m.reverse() #降序排列

索引
a = [66.25, 333, 333, 1, 1234.5]
if 333 in a:
print("333 is in a") #判断333是否在a列表中
print(a.count(333), a.count(66.25), a.count('x')) #返回 x 在列表中出现的次数
print(a.index(333)) #返回列表中第一个值为333的元素的索引。如果没有匹配的元素就会返回一个错误。

遍历
fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
    print(fruits[index])
print("\r")

for i in enumerate(fruits):  #enumerate() 函数同时得到索引位置,从1开始则写enumerate(fruits,1)
    print(i)
    print("\r")
for i, v in enumerate(fruits):
    print(i,v)
    print("\r")
for i, v in enumerate(fruits,1):    #索引数字从1开始
    print(i,v)

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):   #同时遍历两个或更多的序列,可以使用zip()组合
    print('What is your {0}?  It is {1}.'.format(q, a))


嵌套

a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n]
#嵌套列表
print(x)
print(x[0])
print(x[0][1])

循环
vec =[2,4,6]
print([3*x for x in vec])
#将列表中每个数值乘3
print([[x,x**2] for x in vec])
print([3*x for x in vec if x>3])
#if子句做过滤器

vec1 =[2,4,6]
vec2 =[4,3,-9]
print([x*y for x in vec1 for y in vec2])
print([x+y for x in vec1 for y in vec2])
print([vec1[i]*vec2[i] for i in range(len(vec1))])

print([(round(355/113, i)) for i in range(1,6)])
print([str(round(355/113, i)) for i in range(1,6)])

hh=["a","b","c"]
print([x.strip() for x in hh])
#列表元素逐一调用

matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]
#3*4矩阵
print([[row[i] for row in matrix] for i in range(4)])
#转换为4*3矩阵

列表各元素合并
li = ["p","y","t","h","o","n"]
print("".join(li))  #""内填写中间分给符

 

 
posted @ 2016-08-18 15:50  沄持的学习记录  阅读(354)  评论(0)    收藏  举报