Python元素—列表
序列:列表,元组,字符串
列表
列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时。与字符串不同,列表是可变的。你可以直接对原始列表进行修改:添加新元素、删除或覆盖已有元素。在列表中,具有相同值的元素允许出现多次。
empty_list = [ ] #创建空列表
empty_list =list() #创建空列表,定义其属性是列表
weekdays =['星期一','星期二','星期三','星期四','星期五','星期六','星期日’] #定义一个列表
name =['张三','李四','王五']
列表—数据类型转换
Python 的list() 函数可以将其他数据类型转换成列表类型。
>>> list('cat') #字符串
['c', 'a', 't’]
>>> list('123')
['1', '2', '3’]
>>> a_tuple = ('ready', 'fire', 'aim') #元组
>>> list(a_tuple)
['ready', 'fire', 'aim’]
>>> birthday = '1/6/1952'
>>> birthday.split('/') # 字符串分割
['1', '6', '1952']
""" 注意:如果待分割的字符串中包含连续的分隔符,那么在返回的列表中会出现空串元素:"""
>>> splitme = 'a/b//c/d///e'
>>> splitme.split('/')
['a', 'b', '', 'c', 'd', '', '', 'e']
""" 如果把上面例子中的分隔符改成// 则会得到如下结果:"""
>>> splitme = 'a/b//c/d///e'
>>> splitme.split('//')
>>>
['a/b', 'c/d', '/e']
列表—获取元素
和字符串一样,通过偏移量可以从列表中提取对应位置的元素:
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes[0]
'Groucho'
>>> marxes[1]
'Chico'
>>> marxes[2]
'Harpo'
同样,负偏移量代表从尾部开始计数:
>>> marxes[-1]
'Harpo'
>>> marxes[-2]
'Chico'
>>> marxes[-3]
'Groucho'
列表的切片(SILCE)
你可以使用切片提取列表的一个子序列:
>>> marxes = ['Groucho', 'Chico,' 'Harpo']
>>> marxes[0:2]
['Groucho', 'Chico']
列表的切片仍然是一个列表。
与字符串一样,列表的切片也可以设定除1 以外的步长。下面的例子从列表的开头开始每2 个提取一个元素:
>>> marxes[::2]
['Groucho', 'Harpo']
再试试从尾部开始提取,步长仍为2:
>>> marxes[::-2]
['Harpo', 'Groucho']
利用切片还可以巧妙地实现列表逆序:
>>> marxes[::-1]
['Harpo', 'Chico', 'Groucho']
列表—包含列表的列表
列表可以包含各种类型的元素,包括其他列表,如下所示:
>>> Quarter=[[1,2,3],[4,5,6],[7,8,9,],[10,11,12]] #定义Quarter
>>> print(Quarter)
[[1, 2, 3], [4, 5, 6], [7, 8,9], [10, 11, 12]]
>>> Quarter[1]
[4, 5, 6]
>>> Quarter[1][2]
6
列表—列表修改
列表可以包含各种类型的元素,包括其他列表,对列表元素的修改,如下所示:
Quarter=[[1,2,3],[4,5,6],[7,8,9,],[10,11,12]]
>>> Quarter[2][2] = 0
>>> print(Quarter)
[[1, 2, 3], [4, 5, 6], [7, 8, 0], [10, 11, 12]]
>>> Quarter[2][2]='0'
>>> print(Quarter)
[[1, 2, 3], [4, 5, 6], [7, 8, '0'], [10, 11, 12]]
列表—常用操作
列表的常用操作:
Quarter[0:2] # 指定范围并使用切片提取元素
Quarter.append(‘13’) # 使用append()添加元素至尾部
Quarter.extend(name) Quarter += others # 使用extend()或+=合并列表
Quarter.insert(5, ‘14’) # 使用insert()在指定位置插入元素
del Quarter[-1] # 使用del删除指定位置的元素
del Quarter # 会把整个列表删除
Quarter.remove(‘13’) # 使用remove()删除具有指定值的元素
Quarter.pop(1) # 使用pop()获取并删除指定位置的元素 【 pop() 删除元素值会返回删除的值】
Quarter.index ([1,2,3]) #使用index()查询具有特定值的元素位置
‘2' in Quarter # 使用in判断值是否存在
Quarter.count ([1,2,3]) # 使用count()记录特定值出现的次数
'* '.join(marxes) # 使用join()转换为字符串
sorted(marxes) / marxes.sort() # 重新排列元素
len(marxes) # 使用len()获取长度
三种copy赋值方法:
>>> a = [1, 2, 3]
>>> b = a.copy() # 使用copy()复制
>>> c = list(a) #使用=赋值
>>> d = a[:] #使用切片赋值
小讲堂:
join() 是split() 的逆过程,如下所示:
>>> friends = ['Harry', 'Hermione', 'Ron']
>>> separator = ' * '
>>> joined = separator.join(friends)
>>> joined
'Harry * Hermione * Ron'
>>> separated = joined.split(separator)
>>> separated
['Harry', 'Hermione', 'Ron']
>>> separated == friends
True
默认的排序是升序的,通过添加参数reverse=True 可以改变为降序排列:
>>> numbers = [2, 1, 4.0, 3]
>>> numbers.sort(reverse=True)
>>> numbers
[4.0, 3, 2, 1]
列表的copy
""" list7=list[:] 和list8=list6 的区别:"""
>>>list6=[1,7,4,5]
>>>list7=list6[:]
>>>list8=list6
>>>list6.sort()
>>>list6
[1,4,5,7]
>>>list7
[1,7,4,5]
>>>list8
[1,4,5,7]
即list8只是相当于给list6多加了一个指向元素数据的标签而已,对于list7是将list6的东西都拷贝了过来,所以还是要用分片进行拷贝的,不可以偷懒哦!