冒泡泡de可乐
代码都是思想和概念的体现~每多学一点知识,就能少写一行代码~

列表及列表操作

  列表(list)也叫数组(array),是最常用的Python数据类型 

1、定义列表

list=['sunny','杨阳',1,1.5,'哈哈']
  • 用[]定义,元素间用逗号隔开
  • 列表中的元素不需要是相同的数据类型
  • 列表中的元素是有序的,每个元素都分配一个编号,或索引,第一个索引是0,第二个索引是1,依此类推

   列表里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组,套几层就是几维,定义格式如下:

1 num1=[1,2,3] #一维数组
2 num2=[1,2,3,[4,56]] #二维数组
3 nums=[1,2,3,4,['a','b','c','d','e',['','','']],['',0]] #三维数组

2、列表操作

     2.1  查

           使用下标索引访问列表中的值

 1 list=['小黑','小白',1,1,2,1.5]
 2 print(list[0])   #获取第一个元素
 3 print(list[-1])  #获取最后一个元素
 4 
 6 nums=[1,2,3,4,['a','b','c','d','e',['','','']],['',0]] #三维数组
 9 print(nums[4][5][1])   #获取'二'
10 print(nums[5][1])      #获取'0'
11 print(nums[-1][-1])    #获取'0'

   2.2 增

      在列表中增加元素有两种方法:

  • list.append(obj)          在元素末尾添加对象
  • list.insert(index,obj)    在指定位置添加对象
1 list=['sunny','杨阳',1,1.5,'哈哈']
2 list.append('lihui')  #加在最后
3 list.insert(0,502797) #加在索引0处
4 print(list)

  2.3 改

    找到该元素,取出来重新赋值即可

1 list=['小黑','小白',1,1,2,1.5]
2 list[1]='呵呵'    #将小白改成呵呵

  2.4  删

    四种方法:

  • list.pop()  默认删除最后一个元素

           list.pop(index)  删除指定下标的元素,传入的是下标,下标不存在的话会报错

  • list.remove(obj)  删除指定元素,传入的是元素, 如果有相同的元素只会删除第一个,元素不存在时会报错
  • del list[index]     删除指定下标的元素
  • list.clear()    清空列表
1 list=['sunny','杨阳',1,1.5,'哈哈']
2 list.pop()
3 list.pop(1)
4 list.remove(1.5)
5 print(list)

3、 列表内置方法

  • list.count(obj)   统计某个元素在列表中出现的次数
  • list.index(obj)   查找元素的下标,   所传元素不存在的话会报错
  • list.reverse()    反转list
  • list.sort()          排序,默认升序 ;list.sort(reverse=True)  如果指定了reverse=True就是降序
  • list.extend(squ) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
  • len(list)    取list长度,即元素个数
  • list(seq)   将元组转为列表
 1 list=['小黑','小白',1,1,2,1.5]
 2 print(list.count(1)) #查询某个元素在list里出现的次数
 3 print('index方法:',list.index('小黑'))   #查找元素的下标   所传元素不存在的话会报错
 4 print('reverse方法:',list.reverse())   #reverse 反转list
 5 print(list)
 6 list.clear()  #清空整个list
 7 
 8 numbers=[4,7,5,0,3.5,6]
 9 numbers.sort()   #排序  升序
10 print(numbers)
11 numbers.sort(reverse=True) #如果指定了reverse=True就是降序
12 print(numbers)
13 
14 numbers.extend(list)  #将其他列表中的元素加到此list中
15 newlist=list+numbers    #用+可以将两个list合并成一个新的list
16 print(newlist)
17 print(newlist*3)  #将newlist复制3次

4、判断某个元素是否在list中,用in (也适用于字符串)

 1 users=['xixi','haha']
 2 
 3 #校验用户名是否存在,不存在则添加
 4 for i in range(5):
 5  username=input('请输入用户名:')
 6  #if users.count(username)>0:
 7  if username in users:    #判断一个元素是否再list中  in/not in count
 8     print('用户已经被注册')
 9  else:
10     print('用户未注册,可以注册')
11     users.append(username)
12     print(users)

5、循环遍历列表中的元素——for循环

 1 #将passwd中的值都加上abc
 2 passwd=['12345','6865','45632d']
 3 
 4 index=0
 5 for p in passwd:
 6     print(p)
 7     passwd[index]=p+'abc'
 8     index += 1
 9 print(passwd)
10 
11 
12 for index,p in enumerate(passwd): #用enumeration枚举函数,它会取出下标和元素 不用再多定义一个index
13     print('enmerate每次循环的时候',index,p)
14     passwd[index]=p+'abc'
15 print(passwd)

运行结果:

12345
6865
45632d
['12345abc', '6865abc', '45632dabc']
enmerate每次循环的时候 0 12345abc
enmerate每次循环的时候 1 6865abc
enmerate每次循环的时候 2 45632dabc
['12345abcabc', '6865abcabc', '45632dabcabc']

6、切片

     切片是一种取值方式,可获取多个值,适用于list、string。

      list[start_index : end_index : step]

  • 下标:
    • 下标,从0开始,末尾是-1。
    • start_index、end_index都写,切片下标取值顾头不顾尾(指包含start_index,不包含end_index)
    • start_index不写,指从头开始取。
    • end_index不写,指一直取到末尾。
  • 步长step:隔x个取一次值
    • 正数:从左往右取值
    • 负数:从右往左取值
 1 l=['a','b','c','d','e','j','k','l','m','n','o']
 2 #   0   1   2   3   4   5   6   7   8   9   10
 3 print(l[0:4]) #顾头不顾尾
 4 print(l[:4])#如果最前面没写的话,代表从0开始
 5 print(l[4:]) #如果冒号后面没写的话,代表取到最后
 6 
 7 print(l[::3]) #步长,也就是代表隔几个取一次
 8 
 9 a=list(range(1,21))
10 print(a[1::2]) #取偶数
11 print(a[::2])  #取奇数
12 print(a[::-2])  #如果最后面的步长是正数,从左往右取值;步长为负数,从右往左取值
13 print(a[::-1]) 

运行结果:

['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd']
['e', 'j', 'k', 'l', 'm', 'n', 'o']
['a', 'd', 'k', 'n']
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

   切片同样适用于字符串

1 s=input('请输入一个字符串:')
2 if len(s)<2:
3     print('字符串长度必须大于1')
4 elif s==s[::-1]:     #s[::-1] 从右往左取字符串中的值
5      print('是回文')
6 else:
7      print('不是回文')

 元组

  • 用()定义
  • 元组的值不能改变
  • 只有count()和index()两种方法
1 sql_con = ('192.168.0.88','root','123456',3307,'my_db')#定义元组

 

posted on 2018-08-26 11:18  HathawayLee  阅读(241)  评论(0编辑  收藏  举报