Python-列表(list)

一、定义:
列表、list、数组、array:都叫列表
1.一组有序项目的集合;

2.可变的数据类型【可以进行增删改查】;
3.列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】;
  words=['view','code','tools',['price','num','198',['hello','usa','吃鸡']]] # 三维数组,套了几层就是几维数组
  print(words[-1][-1][1]) #输出结果 usa
  4.列表是以方括号“[]”包未的数据集合,不同元素以“,”分隔;
  new_stus=['黄1','黄2','黄3','黄4','黄5']
  5.可通过序号访问其中成员(最前面一个元素的下标(索引、角标、索引)是0 最后一个元素的下标是-1)
  print(new_stus[2])  #输出结果‘黄3’

二、使用方法:
1.增删改查
(1)创建一个空列表:cities
      cities=[] #空的

 (2)增加元素

      cities.append('北京')     #append 在列表末尾增加一个元素
      cities.insert(0,'上海')   #insert 制定位置添加一个元素,下标不可写负数,一次只能增加一个
      cities.append('广州')
cicties.extend(cicties1) #合并列表

 (3)删除元素

      cities.pop(0)          #删除指定位置的元素 传下标
      cities.remove('北京')   #删除指定的元素    传元素
      cities.clear()         #清空list
      del cities[-1]         #删除指定位置的

 (4)查找元素

     print(cities[0])            #指定位置的
     print(cities.index('广州'))  #index 获取元素的下标,找不到元素会报错
     print(cities.count('广州'))  #count 查看元素在list里面出现了多少次

 (5)修改元素

     cities[1]='南京'    #修改指定下标位置的元素,只可以修改已有的下标
 
2.排序
(1)创建一个列表 nums
     nums=[22,33,11,77,55,88]
     nums.sort()                      #soft 升序
     nums.sort(reverse=True)          #加reverse=True 降序
     print(nums)

 

 3.反转:

     my_list=['one','two','three']
     my_list.reverse()         #把list反转一下
     print(my_list)            #输出结果:['three','two','one']4.

4.list循环:
lists = ['H1','H2','H','H4']
for name in lists:
    print(name)
 #打印结果:H1  H2  H3  H4
  for循环在循环可迭代对象的时候,每次循环的是里面的每个月元素
lists = ['黄1','黄2','黄3','黄4',[1,2,3,4]]
for name in lists:
    if type(name) == list:
        for i in name:
            print(i)

    二维数据遍历多加一层循环

三、切片
切片是list取值的一种方式,同样适用于字符串
     nums=['one','two','three']
     print(nums[1:3])     #顾头不顾尾
     print(nums[1:])      #如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不谢
     print(nums[:2])      #如果是从头开始取,取到后面某个
     print(nums[:])       #取所有的
     print(lis[:10:2])    #步长,:2 隔2个取一次
                          #如果步长是负数,从右边往左边开始取值
                          #如果步长是正数,从左边往右边开始取值

四、元祖
元祖也是一个list,和list的区别是,元祖里面的元素无法修改
t = (1,2,3,4,5,6)
print(type(t))
#输出结果:<class 'tuple'>
t = (1)        #int类型
t = ('abc')   #str类型
print(type(t))
  如果元祖里面只有一个元素的话,那么你必须在这个元素后面在一个逗号

五、深拷贝、浅拷贝:
import copy
lis = [1,1,2,3,4,5,6,8]
l2 = lis    #浅拷贝
l2.append('hello')
print(lis)
#打印结果:[1, 1, 2, 3, 4, 5, 6, 8, 'hello']

lis = [1,1,2,3,4,5,6,8]
l2 = copy.deepcopy(lis)  #深拷贝
l2.append('hello')
print(lis)
 
打印结果:[1, 1, 2, 3, 4, 5, 6, 8]

  深拷贝和浅拷贝的区别就是深拷贝会重新开辟一个内存空间


五、小练习:

校验用户名是否合法,有以下要求:

1.输入账号
2.如果账号存在,提示已经被注册,如果不存在,就继续注册
3.用户名不能为空
4.用户名长度6-12之间
5.最多输入3次
 all_users=['黄11111','黄2','黄3']
 for i in  range(3):
     username=input('请输入用户名').strip()
     if len(username)>5 and len(username)<13:
         if all_users.count(username)>0:
             print('这个名字太好啦,已经被注册了')
         else:
             print('名字不错,赶紧注册吧!')
             break
     else:
         print('用户名长度不合法!长度6-12之间')
 else:
     print('失败次数过多')

 

posted @ 2018-03-29 16:42  小黄同学。  阅读(304)  评论(0)    收藏  举报