list

List

一、列表

    以[ ]括起来,每个元素用","隔开,且可以存放各种数据类型。

    列表相比于字符串,不仅可以存放不同的数据类型,而且可存放大量的数据。32位python可以存放:536870912个元素,64位可以存放:1152921504606846975个元素。

    列表是有序的(按照保存的顺序),有索引,可以切片方便取值。

    列表属于可变数据类型。

1.索引

lst = ["python", "java", "c",  "c++", [11, 22,33]]

print(lst[0])  # python
print(lst[4][0]) # 11

2.切片

    列表切片后得到还是列表

lst = [11, 22, 33, 44, 55, 66]

print(lst[0:3]) # [11, 22, 33] 
print(lst[1::2]) # [22, 44, 66]
print(lst[2::-1]) # [33,22,11]

3.增删改查

1).增

  • append

    在列表末尾增加元素

lst = [11, 22, 33, 44]
lst.append(55)
print(lst) # [11, 22, 33, 44, 55]
  • insert
lst = [11, 22,33]
lst.insert(1, 55)
print(lst) # [11, 55, 22, 33]
  • extend

    迭代添加,增加的元素须为可迭代对象,且添加位置为末尾

lst = [11, 22, 33]
lst.extend([55, 66]) # [11, 22, 33, 55, 66]
lst.extend("python") # [11, 22, 33, 55,66, 'p', 'y', 't', 'h', 'o', 'n']
lst.extend(44) # 报错

2).删除

  • pop

    默认删除列表末尾元素,也可删除指定位置元素,前提得提供索引。该删除有返回值,返回值为删除的元素

lst = [11, 22, 33,  44, 55]
el = lst.pop() # 55
print(lst) # [11, 22, 33, 44]

lst.pop(2)
print(lst) # [11, 22, 44]
  • remove

      根据元素内容进行删除,若列表中有多个相同的元素,则执行remove操作删除的是第一个元素

lst = [11, 22, 33, 44]

lst.remove(44)
print(lst) # [11, 22, 33]
  • del

    切片删除

lst = [11, 22, 33, 44, 55, 66]

del lst[0] 
print(lst) # [22, 33, 44, 55, 66]

del[1:4:2] 
print(lst) # [22, 44, 66]
  • clear

    清空列表

lst = [11, 22, 33, 44, 55]

lst.clear()
print(lst) # []

 3).修改

    指定索引修改

lst = [11, 22, 33, 44]

lst[2] = 55
print(lst) # [11, 22, 55, 44]

    根据切片修改,如果步长不是1,则修改的元素的个数与提供的元素个数须匹配。如果切片没有步长或者步长是1,则不用关心个数

lst = [11, 22, 33, 44, 55]

lst[1:4] = '编程'
print(lst) # [11, "编", "程", 55]

lst = [11, 22, 33, 44, 55, 66]
lst[1:5:2] = "编程"
print(lst) # [11, "编", 33, "程", 55, 66]

 4).查询

    列表是一个可打迭代对象,所以可以进行for循环

for i in lst:
    print(i)

 4.其他操作

  • count

    查询某元素出现的次数

lst = [11, 22, 11, 44, 55, 66]

c = lst.count(11)
print(c) # 2
  • sort

    默认按升序排列,若需降序排列,只需在括号内添加reverse=True

lst = [11, 44, 33, 22, 55]

lst.sort()
print(lst) # [11, 22, 33, 44, 55]

lst.sort(reverse=True) print(lst) # [55, 44, 33, 22, 11]
  • reverse

    翻转列表,无返回值

lst = [11, 33, 22, 55, 44]

lst.reverse()
print(lst) # [44, 55, 22, 33, 11]

5.列表嵌套

    采用降维操作

lst = [11, 22, [33, ["python", 55]], 66]

print(lst[1])  # 22

print(lst[2][0]) # 33

print(lst[2][1][0]) # p

lst[2][1][0] = lst[2][1][0].replace("p", "P")

print(lst) # [11, 22, [33, ['Python', 55]], 66]

lst[2].append(77)
print(lst) # [11, 22, [33, ["Python", 55], 77], 66]

 6.循环过程中删除列表元素问题

lst = [11, 22, 33, 44]

for i in lst:
    lst.remove(i)
print(lst) # [22, 44]

原因:

    在for的运行过程中,会有一个指针来记录当前循环的元素是哪个,一开始这个指针指向第0个,然后获取到第0个元素。紧接着删除第0个。这个时候,原来是第一个的元素会自动的变成第0个。然后指针向后移动一次,指向第1个元素。这时原来的1已经变成了0,也就不会被删除了。

lst = [11, 22, 33, 44]
del_lst = []

for i in lst:
del_lst.append(i)

for i in del_lst:
lst.remove(i)

print(lst) # []

 注意:由于删除元素会导致元素的索引改变,所以容易出现问题。尽量不要在循环中直接删除元素。可以把要删除的元素添加到另一个列表中然后批量删除。

二、range

  • range(start, end, 步长)
  • 获取元素的索引和元素
lst = ["语文", "数学", "英语","高数","体育"]
for i in range(len(lst)):
        print(i, lst[i])

 

posted @ 2018-10-22 17:16  Ethan_Y  阅读(482)  评论(0编辑  收藏  举报