python基本数据类型之列表

列表简介

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

list的基本功能

  • 结果类型  中括号括起来
  • 逗号(,)分割每一个元素
  • 列表中的元素可以是数字,字符串,列表,布尔值所有的都能放
  • 索引,切片
li = [1, 3, 5,, ["史正文",18],"cat"]
print(li[1])              # 索引取值
print(li[2:4])            # 切片取值(切片的结果也是列表)
  • 支持for循环
li = [1, 3, 5, "jianer", ["文文",18],"cat"]
for item in li:           # for循环列表
print(item)
  • 索引删除,切片删除 
li = [1, 3, 5, "jianer", ["儿",18],"cat"]
del li[0]                 # 索引删除
print(li)
del li[0:3]               # 切片删除
print(li)
  • 索引修改,切片修改
li = [1, 3, 5, ["尖儿",18],"cat"]
li[0] = 88                # 索引修改
print(li)
li[0:3] = 7,8,9           # 切片修改
print(li)
  • in操作
li = [1, 3, 5, "jianer", ["病毒尖儿",18],"cat"]
v = 3 in(li)              # in操作
print(v)   在的列表里面返回一个True 不在返回Flase 
  • 索引找值
li = [1, 3, 5, "jianer", ["病毒尖儿",18],"cat"]
v = li[4][0][2]          # 索引找并打印 
print(v) 

转换

  • 列表转换成字符串  
  • 需要自己写for循环一个一个处理:既有数字又有字符串
  • 直接使用字符串join方法:只有字符串

list的方法(魔法)

  • 需要记忆的魔法有:append(追加),extend(扩展),insert(插入)

  append  原来值最后追加,数字,字符,列表都可以进行追加

 

# ###################灰魔法:list 类中提供的方法 ##################
# 1、原来的值最后追加 append
# 对象 方法(。。) # 变量 li 对象调用append方法   里面的元素叫参数
# li = [11, 22, 33, 44, 22]
# li.append(99)
# print(li)

#2、清空列表  clear
# li = [11, 22, 33, 44, 22]
# li.clear()
# print(li)

# 3、拷贝 ,浅拷贝 copy 
# li = [11, 22, 33, 44, 22]
# v  = li.copy()
# print(v)

# 4、计算列表中元素出现的次数  count
# li = [11, 22, 33, 44, 22]
# v = li.count(22)
# print(v)

# 5、扩展原列表 ,参数 :可迭代对象
# li = [11, 22, 33, 44, 22]
# li.append([222])
# print(li)

# li = [11,22,33,22,44]
# li.extend(["alex",998])
# print(li)   # 用for循环extend后面加的参数循环打印加到列表里
# # 例如 :
# li.extend("alex")
# print(li)

# 6、根据值获取当前值索引的位置 (左边优先)
# li = [11, 22, 33, 44, 22]
# v = li.index(33)
# print(v)

# 7、在指定索引位置插入元素
# li = [11, 22, 33, 44, 22]
# li.insert(0,22)
# print(li)

# 8、删除某个值(1、指定索引 : 2、默认最后一个)并获取删除的值
# li = [11, 22, 33, 44, 22]
# v = li.pop(3)
# print(v)
# print(li)

# 9、删除列表中的指定值,左边优先
# li = [11, 22, 33, 44, 22]
# li.remove(22)
# print(li)
# PS :pop remove del li[0]  del li[7:9] clear    #都是删除

# 10、将列表中进行反转
# li = [11, 22, 33, 44, 22]
# li.reverse()
# print(li)

# 11、列表的排序
# li = [1,77,55,99,22,]
# li.sort() #默认从小到大排序
# li.sort(reverse= True)    # 从大到小排序
# print(li)

list 用法和注意事项

Python的列表推导式

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。
它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以iffor语句为上下文的表达式运行完成之后产生。

规范

variable = [out_exp for out_exp in input_list if out_exp == 2]

这里是另外一个简明例子:

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

这将对快速生成列表非常有用。
有些人甚至更喜欢使用它而不是filter函数。
列表推导式在有些情况下超赞,特别是当你需要使用for循环来生成一个新列表。举个例子,你通常会这样做:  

squared = []
for x in range(10):
    squared.append(x**2)

你可以使用列表推导式来简化它,就像这样:

squared = [x**2 for x in range(10)]
一句话生成九九乘法表
1
print('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))

 

posted @ 2017-05-28 11:52  摆渡人1993  阅读(133)  评论(0编辑  收藏  举报