python - 列表

一维列表

列表的定义

列表可以浅显理解为不同数据的集合,参同字符串。

列表的创建

  • 空列表可以直接采用lista = [].
  • 也可以使用lista = list().
  • 也可在定义列表时直接赋具体内容,lista = [1,2.0234,True,‘ok’,[1,‘second’]]
  • *lista = list(range(10))*生成0~9的列表,range(start, stop[, step])。
  • 推导式创建列表:[a2 for i in range(10) if 2%2==0],第一步运算range(10),得到0-9,第二步计算02,12,22…9*2。第三步,把能被 2整除的数留存。
a = []
a
[]
b = list()
b
[]
c = [1,2.34,'ok']
c
[1, 2.34, 'ok']
d = list(range(1,12,3))
d
[1, 4, 7, 10]
#列表推导式
e = [a*2 for a in range(10) if a%2==0]
e
[0, 4, 8, 12, 16]

列表的访问

  • 需要访问单个列表元素的时候可采用字符串索引方式。如lista = [1,2,3,4,5]。需要访问列表lista第2个元素,也即索引是1的对象。可以使用
    lista[1]。
#定义列表lista。
lista = [1,2,3,4,5]
#打印列表lista
lista
[1, 2, 3, 4, 5]
#访问列表lista的第2个元素。
lista[1]
2
  • 如需访问列表多个元素就需要用到切片slice。这和字符串的切片相同。在此不再赘述。
lista = [333,1.2314,'ok',False,666]#定义列表lista
lista		#打印列表lista
[333, 1.2314, 'ok', False, 666]
lista[1]		#访问列表lista第一个元素。
1.2314
lista[:]		#访问整个列表,[[开始位置]:[结束位置]:步长],开始与结束位置超过列表长度没有关系,会自动识别开始位置为0,结束位置为len(lista)-1.
[333, 1.2314, 'ok', False, 666]
lista[:2]		#访问lista列表的第一个元素至第三个元素之间的元素。包头不包尾。
[333, 1.2314]
lista[2:]		#访问lista列表从第3个元素(索引位置为2)开始至结束的所有元素。
['ok', False, 666]
lista[::-1]  #翻转lista列表。
[666, False, 'ok', 1.2314, 333]
lista[::2]		#访问:lista列表的步长为2的所有元素。
[333, 'ok', 666]
lista[:88]		#超过列表lista的长度可以正常访问不报错。
[333, 1.2314, 'ok', False, 666]

列表元素的新增

在列表新增中,比较有效率的方式是在列表后面附加元素,不改变列表的原有对象id。

  • lista.append()
  • lista.extend()
#定义列表lista
lista = [333,1.2314,'ok',False,666,'gogo', 111, 1.234]
id(lista)		#查看lista的对象id.
1539167796416
#使用列表extend方法对lista列表新增三个元素。extend支持可迭代对象,可以
lista.extend(['go',11,1.24])
#打印lista列表的所有元素。
lista
[333, 1.2314, 'ok', False, 666, 'gogo', 111, 1.234, 'go', 11, 1.24]
id(lista)
1539167796416
  • lista.insert(index,object)
d = [1,2,3,False]
id(d)
1539167887744
d.insert(2,'three')
d
[1, 2, 'three', 3, False]
id(d)
1539167887744
  • 列表直接相加 lista + listb
lista = [1,2,3,4]
listb = ["ok",False]
lista + listb
[1, 2, 3, 4, 'ok', False]

列表中的元素删除

  • 列表自有pop方法,默认弹出(删除)列表最后一个元素并显示,也可指定位置.lista.pop(index).
  • del方法,del lista[index]。
  • 列表自有remove方法,lista.remove(name),name是指元素的名字。
lista = [1, 2, 3, 4, 100, 200]		#定义lista列表。
[1, 2, 3, 4, 100, 200]
lista.pop()		#使用pop不带索引,默认删除列表最后一个元素。
200
lista		#打印lista列表,200已被弹出。
[1, 2, 3, 4, 100]
lista.pop(2)			#使用pop方法,索引位置为2,删除列表索引位置为2的第三个元素。
3
lista
[1, 2, 4, 100]
#使用del方法删除列表lista的第二个元素。
del lista[1]
lista
[1, 4, 100]
#使用列表的remove方法,删除列表中的第一个value元素。
lista = [100,2,3,100,4,5,100]
lista
[100, 2, 3, 100, 4, 5, 100]
id(lista)
1539167799680
lista.remove(100)
lista
[2, 3, 100, 4, 5, 100]
id(lista)
1539167799680

列表中的元素修改

可以使用lista[index],也可以使用列表的slice切片。自已尝试。

lista
[2, 3, 100, 4, 5, 100]
lista[0] = '111'
lista
['111', 3, 100, 4, 5, 100]
lista[:3]='q'
lista
['q', 4, 5, 100]

列表的其它方法

sort排序方法
  • 从小到大排序
#定义lista列表
lista = [10,20,30.3,30,40]
#执行sort排序,从小到大。
lista.sort()
lista
[10, 20, 30, 30.3, 40]
  • 小大到小排序。
lista
[10, 20, 30.3, 30, 40]
lista.sort(reverse=True)
lista
[40, 30.3, 30, 20, 10]
radnom.shuffle打乱列表顺序

执行shuffle需要首先加载random模块。

lista
[40, 30.3, 30, 20, 10]
import random
random.shuffle(lista)
lista
[30, 40, 20, 10, 30.3]
random.shuffle(lista)
lista
[40, 10, 20, 30, 30.3]
max,min,sum方法

比较列表中的最大与最小数,注意的是,不是列表自有方法。

  • max 取列表中最大的数;
  • min 取列表中最小的数;
  • sum 对列表中的元素进行相加操作。
lista
[40, 10, 20, 30, 30.3]
max(lista)
40
min(lista)
10
sum(lista)
130.3
sorted,reversed方法。

这二个方法与列表自有的方法类似,不同的是reversed方法,是生成一个liest_reversediterator object。

lista
[40, 10, 20, 30, 30.3]
sorted(lista)
[10, 20, 30, 30.3, 40]
reversed(lista)
<list_reverseiterator object at 0x000001665D90C370>
list(reversed(lista))
[30.3, 30, 20, 10, 40]

二维多维列表

多维列表的创建

这和一维列表的创建没有什么本质上的区别,唯一需要注意的是,二维列表根本上就是一维列表里面的元素是另一个一维列表,二维列表也即是一维列表嵌套一维列表,三维列表就是三层嵌套。
示例:
有三个热门城市,我们需要记录它的城市基本信息(城市名称,所在省份,著名景点,地区编码)。

城市名称所在省份著名景点地区编码
周口河南太昊陵0371
汉昌武汉武昌鱼027
厦门福建白虎岩0592
定义二维列表

在此可使用二维列表表示为:
listcity = [
[‘周口’,‘河南’,‘太昊陵’,371],
[‘汉昌’,‘武汉’,‘武昌鱼’,27],
[‘厦门’,‘福建’,‘白虎岩’,592]
]

访问二维列表
  • 可以直接访问,示例
listcity
[['周口', '河南', '太昊陵', 371], ['汉昌', '武汉', '武昌鱼', 27], ['厦门', '福建', '白虎岩', 592]]
listcity[0]#访问列表listcity中的第一个元素。
['周口', '河南', '太昊陵', 371]		#显示的是这个列表,既然 是列表,肯定会支持索引位置进行访问。
listcity[0][1]			#访问listcity列表中的第一个元素(上一步得知它是一个列表对象)的第二个元素(也可称为索引位置为1)。
'河南'
  • 也可遍历访问:
listcity
[['周口', '河南', '太昊陵', 371], ['汉昌', '武汉', '武昌鱼', 27], ['厦门', '福建', '白虎岩', 592]]
listcity_out=len(listcity) #我们知道二维列表里面有三条数据(三个一维列表),可以使用len()方法获取列表的长度。
listcity_out
3
listcity_in = len(listcity[0])  #二维列表里面的一维列表,查看每个列表的具体长度。这个放在遍历循环里面最好,可以智能检查长度并访问,在这里仅做示例。
listcity_in
4
for i in range(listcity_out):
   for j in range(listcity_in):
       print(listcity[i][j],end='\t')#打印一维列表里面的数据时使用tab结尾。
   print()  #每访问完一条一维列表后,进行换行处理。

   #输出内容。
周口	河南	太昊陵	371	
汉昌	武汉	武昌鱼	27	
厦门	福建	白虎岩	592	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值