Python3学习笔记:列表

列表

Python中的列表,可以视为java中的集合,是一个各种类型数据的集合。当然列表可以为空。

    list1=[1,2.34,"name",4+5j]
    list2=[2,34,567,89]
    list3=[]
    list4=[list1,list2,list3]

访问列表内容

Python中的列表,可以访问一个元素或多个元素的子集。访问子集的方法跟字符串类型类似,同样范围为【x,y),包含x,不包含y.

    print("list1 : ",list1)
    print("list2 : ",list2)
    print("list3 : ",list3)
    print("list4 : ",list4)
    print("list1[0]",list1[0])
    print("list2[2:3]",list2[2:4])
    print("list4[2:3]",list4[2:3])

相应结果为

list1 :  [1, 2.34, 'name', (4+5j)]
list2 :  [2, 34, 567, 89]
list3 :  []
list4 :  [[1, 2.34, 'name', (4+5j)], [2, 34, 567, 89], []]
list1[0]= 1
list2[2:3]= [567, 89]
list4[2:3]= [[]]

增删改查

添加数据

    list1.append("breakloop") #追加数据
    list1.insert(0, "hello") #插入数据
    list1.insert(1, "world")
    list1.insert(3, "world")
    print("list1 =", list1)

相应结果为

list1 = ['hello', 'world', 1, 'world', 2.34, 'name', (4+5j), 'breakloop']

删除数据

    del(list1[0])
    print("list1 = ",list1)
    list1.remove("world")
    print("list1 = ",list1)
    list1.clear()
    print("list1 = ",list1)

相应数据为

list1 =  ['world', 1, 'world', 2.34, 'name', (4+5j), 'breakloop']
list1 =  [1, 'world', 2.34, 'name', (4+5j), 'breakloop']
list1 =  []
需要指出的是,remove一次只能移出一个元素,即使是列表中存在多个同样的元素。

修改数据

    print("list2[3] = ",list2[3])
    list2[3]=890
    print("list2[3] = ",list2[3])

相应结果为

list2[3] =  89
list2[3] =  890

查找数据

    print("is 34 existed in list2? ", 34 in list2)
    print("is 34 existed in list2, index scrope from 1 to 3? ",list2.index(34, 1,3))
    print("is 34 existed in list2, index scrope from 0 to 1? ",list2.index(34, 0,1))

需要指出的是,

(1)查询范围,仍是【x,y)

(2)若未查到相应数据,将会报错"ValueError: 34 is not in list",而非返回-1,与字符串操作不同。

其它工具方法

    print("list2 length = ", len(list2)) #获取长度
    print("list2 +list2 =", list2+list2) #拼接
    print("list2 = ", list2)
    list2=list2*3 #复制
    print("list2 * 3 = ", list2)
    print("list4 = ", list4) #修改list2后,并不影响list4的值
    print("max item in list2 = ", max(list2)) #获取列表中的最大值,前提:列表中必须为相同类型
    print("min item in list2 = ", min(list2)) #获取列表中的最小值,前提:列表中必须为相同类型
    print("34 count =", list2.count(34)) #获取某一元素出现的次数
    list2.reverse() #反序
    print("list2 reverse", list2)
    print("list1", list1)
    list1=list2.copy() #复制
    print("list1", list1)

相应结果为

list2 length =  4
list2 +list2 = [2, 34, 567, 890, 2, 34, 567, 890]
list2 =  [2, 34, 567, 890]
list2 * 3 =  [2, 34, 567, 890, 2, 34, 567, 890, 2, 34, 567, 890]
list4 =  [[], [2, 34, 567, 890], []]
max item in list2 =  890
min item in list2 =  2
34 count = 3
list2 reverse [890, 567, 34, 2, 890, 567, 34, 2, 890, 567, 34, 2]
list1 []
list1 [890, 567, 34, 2, 890, 567, 34, 2, 890, 567, 34, 2]

问题:

(1)如果对字符串列表取最大最小值,会如何?

    list5=["abcd","abca","abcdef","abcdefg",b]

对应结果如下

max item in list5 =  b
min item in list5 =  abca

可见,是依次对比的字母的ascii码值,若相同则继续下一位。直至一者长度不足,或ascii码值大小已分。

在一者长度不足的情况下,长度短者小,长度长者大。即“abcd”<“abcdef”

(2)如果对含有复数的整形数据列表,或仅包含复数列表取最大最小值,会如何?

    list6=[1,2,5,3.8,5+1j,0,-1]
    list7=[1+2j,2+3j,4+5j,5-6j,-7+8j]

结果报错

TypeError: '>' not supported between instances of 'complex' and 'int'
TypeError: '>' not supported between instances of 'complex' and 'complex'

遍历列表

    for a in list1:
        print(a)

一定要注意第一行的“:”不能丢

列表提供了append和pop方法,使得列表又了栈(后进先出)的功能。

    print("list1 = ", list1)
    print("list 1 pop = ", list1.pop())
    print("list1 = ", list1)
    print("list 1 pop = ", list1.pop())
    print("list1 = ", list1)
    print("list 1 pop = ", list1.pop())
    print("list1 = ", list1)

相应结果为

list1 =  [890, 567, 34, 2, 890, 567, 34, 2, 890, 567, 34, 2]
list 1 pop =  2
list1 =  [890, 567, 34, 2, 890, 567, 34, 2, 890, 567, 34]
list 1 pop =  34
list1 =  [890, 567, 34, 2, 890, 567, 34, 2, 890, 567]
list 1 pop =  567
list1 =  [890, 567, 34, 2, 890, 567, 34, 2, 890]

猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/80723596