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]