python 数据类型--列表

创建列表

创建列表可以使用list([iterable])函数,或者使用中括号[]元素之间用逗号分隔。[iterable]表示可以迭代,比如,元祖,list((1,2,3,4))

先声明一个空列表:

>>> names = []
>>> names
[]

可以存多个值:

>>> names = ["wangwang","maomao"]
>>> names
['wangwang', 'maomao']

如何取值:

>>> names[1]
'maomao'

如何修改:

>>> names[0] = "gougou"
>>> names
['gougou', 'maomao']

增加:

>>> names.append("miaomiao")
>>> names
['gougou', 'maomao', 'miaomiao']

插入:

>>> names
['gougou', 'maomao', 'miaomiao']
>>> names.insert(2,"new")
>>> names
['gougou', 'maomao', 'new', 'miaomiao']

删除:

第一种方法:

>>> names
['gougou', 'maomao', 'new', 'miaomiao']
>>> del names[0]    #根据索引删除
>>> names
['maomao', 'new', 'miaomiao']

第二种方法:

>>> names
['maomao', 'new', 'miaomiao']
>>> names.remove("new")    #根据名字删除
>>> names
['maomao', 'miaomiao']


3、使用pop删除

  names.pop(0)  与del  

  但是pop不支持,切取 [0:2]但是del支持

查找:

复制代码
>>> names
['maomao', 'miaomiao', 'wangwang', 'liyang', 'zhangsi', 'jack', 'mack', 'rain',
'yangle', 'wangjie', 'lirun', 'xiaojie']
>>> names.index("liyang")   #查找索引
3
>>> names[3]
'liyang'
>>> names [names.index("liyang")] = "LiYang"  #根据索引重新赋值
>>> names
['maomao', 'miaomiao', 'wangwang', 'LiYang', 'zhangsi', 'jack', 'mack', 'rain',
'yangle', 'wangjie', 'lirun', 'xiaojie']
复制代码

统计某个姓名是否有重名:

>>> names.count("maomao")
2

排序:

复制代码
>>> names
['maomao', 'miaomiao', 'wangwang', 'LiYang', 'zhangsi', 'jack', 'mack', 'rain',
'yangle', 'wangjie', 'lirun', 'xiaojie', 'maomao']
>>> names.sort()        #根据ASCII排序
>>> names 
['LiYang', 'jack', 'lirun', 'mack', 'maomao', 'maomao', 'miaomiao', 'rain', 'wan
gjie', 'wangwang', 'xiaojie', 'yangle', 'zhangsi']
复制代码

从大到小排序:

>>> names.reverse()
>>> names
['zhangsi', 'yangle', 'xiaojie', 'wangwang', 'wangjie', 'rain', 'miaomiao', 'mao
mao', 'maomao', 'mack', 'lirun', 'jack', 'LiYang']

取值:

复制代码
>>> names
['zhangsi', 'yangle', 'xiaojie', 'wangwang', 'wangjie', 'rain', 'miaomiao', 'mao
mao', 'maomao', 'mack', 'lirun', 'jack', 'LiYang']
>>> names[3:5]   #取第3和第4。注意:切片顾头不顾尾
['wangwang', 'wangjie']
>>> names[-1]。 #取最后一个
'LiYang'
>>> names[-3:-1]  #倒数第三位和倒数第二位,注意永远是从左到右切片的
['lirun', 'jack']
复制代码

打印所有的基数位:

>>> names
['zhangsi', 'yangle', 'xiaojie', 'wangwang', 'wangjie', 'rain', 'miaomiao', 'mao
mao', 'maomao', 'mack', 'lirun', 'jack', 'LiYang']
>>> names[0::2]   #从头到尾,2为步长
['zhangsi', 'xiaojie', 'wangjie', 'miaomiao', 'maomao', 'lirun', 'LiYang']


#列表长度

>>> len(name_list)
2

 

#列表长度

>>> len(name_list)
2

 

#判断“wuxin”是否包含在name_list中,并且返回布尔值

>>> "wuxin" in name_list
True

 

列表和元祖区别:
元祖不可修改,列表可以修改

[
"daoxin",("seven","wuxin")
]

元祖与列表取原始的方式一样

a=['asd','dfd','rttr']

b=('eere','rttr','uiuiu')

蒋列表转化为元祖

g=tuple(a)

反之

k=list(b)


列表遍历方式
a=['adas','sdsd','dfdfd','ghghg']
for i in range(len(a)):
    print(a[i])


2、第二种
for i in range(0,len(a)):
  print(a[i])
3、第三种
for i in a:
  print(i)
遍历数组同时输出下标
for i in range(len(a)):
  print(i,a[i])
2、for i in range(len(a)):
  print(a.index(a[i]),a[i])

3、for i,j in enumerate(a):
  print(i,j)

列表推导式
a=[x**2 for x in range(10)if x%2==0]
print(a)


总结:1、list、tuple是有序列表,可重复出现;dict、set是无序列表,set不能出现重复元素


     2、list元素可变、tuple元素不可变


     3、dict和set的key值不可变,唯一性


     4、set只有key没有value


     5、set的用途:去重、并集、交集等


     6、list、tuple:+、*、索引、切片、检查成员等


   7、dict查询效率高,但是消耗内存多;list、tuple查询效率低、但是消耗内存少


 
原文地址:https://www.cnblogs.com/fkkk/p/6401775.html