我们可以通过下面的代码来了解字符串的使用。
下面的代码演示了如何定义列表、使用下标访问列表元素以及添加和删除元素的操作。
defmain():list1=[1,3,5,7,100]print(list1)list2=['hello']*5print(list2)print(len(list1))#计算列表长度(元素个数)print(list1[0])#打印列表第一个元素print(list1[4])#打印列表最后一个元素#pirnt(list[5])#IndexError:listindexoutofrangeprint(list1[-1])#打印列表最后一个元素print(list1[-3])#打印列表倒数第三个元素list1[0]=300#修改列表元素print(list1)#添加元素list1.append(200)#在列表末尾添加元素list1.insert(1,400)#在列表第二个位置插入值为400的元素list1+=[1000,2000]#为列表添加1000,2000两个新元素print(list1)print(len(list1))#删除元素list1.remove(3)#删除list1中的3这个元素if1234inlist1:list1.remove(1234)dellist1[0]#删除list1的第一个元素print(list1)#清空列表元素list1.clear()print(list1)if__name__=='__main__':main()[1,3,5,7,100]['hello','hello','hello','hello','hello']511001005[300,3,5,7,100][300,400,3,5,7,100,200,1000,2000]9[400,5,7,100,200,1000,2000][]和字符串一样,列表也可以做切片操作,通过切片操作我们可以实现对列表的复制或者将列表中的一部分取出来创建出新的列表,代码如下所示。
defmain():fruits=['grape','apple','strawberry','waxberry']fruits+=['pitaya','pear','mango']#循环遍历列表元素forfruitinfruits:print(fruit.title(),end='')print()#列表切片fruits2=fruits[1:4]print(fruits2)#fruit3=fruits#没有复制列表只创建了新的引用#可以通过完整切片操作来完成对列表的复制fruits3=fruits[:]print(fruits3)fruits4=fruits[-3:-1]print(fruits4)#可以通过反向切片来获得倒转以后的列表的拷贝fruits5=fruits[::-1]print(fruits5)if__name__=='__main__':main()GrapeAppleStrawberryWaxberryPitayaPearMango['apple','strawberry','waxberry']['grape','apple','strawberry','waxberry','pitaya','pear','mango']['pitaya','pear']['mango','pear','pitaya','waxberry','strawberry','apple','grape']下面的代码实现了对列表的排序操作。
defmain():list1=['orange','apple','zoo','internationalization','blueberry']list2=sorted(list1)#sorted函数返回列表排序后的拷贝不会修改传入的列表#函数的设计就应该像sorted函数一样尽可能不产生副作用list3=sorted(list1,reverse=True)#通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序list4=sorted(list1,key=len)print(list1)print(list2)print(list3)print(list4)#给列表对象发出排序消息直接在列表对象上进行排序list1.sort(reverse=True)print(list1)if__name__=='__main__':main()['orange','apple','zoo','internationalization','blueberry']['apple','blueberry','internationalization','orange','zoo']['zoo','orange','internationalization','blueberry','apple']['zoo','apple','orange','blueberry','internationalization']['zoo','orange','internationalization','blueberry','apple']我们还可以使用列表的生成式语法来创建列表,代码如下所示。
deffib(n):a,b=0,1for_inrange(n):a,b=b,a+byieldadefmain():forvalinfib(20):print(val)if__name__=='__main__':main()112358132134558914423337761098715972584418167653、使用元组Python的元组与列表类似,不同之处在于元组的元素不能修改,在前面的代码中我们已经不止一次使用过元组了。顾名思义,我们把多个元素组合到一起就形成了一个元组,所以它和列表一样可以保存多条数据。下面的代码演示了如何定义和使用元组。
defmain():t=('骆昊',38,True,'四川成都')#定义元组print(t)#获取数组中的元素print(t[0])print(t[3])#遍历元组中的值formemberint:print(member)#重新给元组赋值#t[0]='王大锤'#TypeError元组不可更改#变量t重新引用了新的元组原来的原来的元组将被回收空间t=('王大锤',20,True,'云南昆明')print(t)person=list(t)#将元组转换成列表print(person)#列表是可以修改它的元素的person[0]='李小龙'person[1]=25print(person)#将列表转换为元组fruits_list=['apple','banana','orange']fruits_tuple=tuple(fruits_list)print(fruits_tuple)if__name__=='__main__':main()('骆昊',38,True,'四川成都')骆昊四川成都骆昊38True四川成都('王大锤',20,True,'云南昆明')['王大锤',20,True,'云南昆明']['李小龙',25,True,'云南昆明']('apple','banana','orange')这里有一个非常值得探讨的问题,我们已经有了列表这种数据结构,为什么还需要元组这样的类型呢?
Python中的集合跟数学上的集合是一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算。
字典是另一种可变容器模型,类似于我们生活中使用的字典,它可以存储任意类型对象,与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。下面的代码演示了如何定义和使用字典。