Python学习(列表)

一、列表

  • 用方括号括起来的[ ],每一个元素以逗号分割,可以储存不同的数据类型数据
  • 特点:是一个有序的、可重复的、可变类型
1.1 创建
  • 创建空列表

    li = []
    
  • 创建多元素列表

    li = [1,2,3,"abcd",["1","2","3"]]
    
  • 强转

    sr = "abcd"
    li = list(sr)
    print(li,type(li))	#['a', 'b', 'c', 'd'] <class 'list'>
    
1.2 拼接
li1 = ["I"]
li2 = ["Love"]
print(li1 + li2)	#['I', 'Love']
1.3 重复
li2 = ["Love"]
print(li2*3)	#['Love', 'Love', 'Love']
1.4 索引(偏移)[ ] ,切片 [ : ] ,[ : : ]
li = ["C","i","t","y","city"]
print(li[0])	#C
print(li[:2])	#['C', 'i']
print(li[::-1])	#['city', 'y', 't', 'i', 'C']
print(li[4][2])	#t
1.5 列表的常见操作
1.5.1 增
  • append( ):整体加入
  • extend( ):按元素加入
  • insert( ):按照索引添加
  • 通过索引增加,单不能超过已有索引的最大值
li = ["City", "College"]
li1 = ["a", "b", "c"]
li.append(li1)
print(li)  # ['City', 'College', ['a', 'b', 'c']]

li = ["City", "College"]
li1 = ["a", "b", "c"]
li.extend(li1)
print(li)  # ['City', 'College', 'a', 'b', 'c']

li = ["City", "College"]
li1 = ["a", "b", "c"]
li.insert(1, li1)
print(li)  # ['City', ['a', 'b', 'c'], 'College']

li1 = ["a", "b", "c"]
li1[1:1] = [1, 2, 3]
print(li1)  # ['a', 1, 2, 3, 'b', 'c']
1.5.2 删
  • pop( ):返回被删除的元素

    • 如果不指定索引,默认删除最后一个元素
    • 删除指定索引对应的元素
  • remove( ):移除第一次遇到的指定元素,无返回值

  • del list[ ]:默认删除整个列表,有索引参数则删除该索引对应的元素

  • clear():清空整个列表

li = ["a", "b", "c", "d", "e"]
li.pop()
print(li)  # ['a', 'b', 'c', 'd']
li.pop(2)
print(li)  # ['a', 'b', 'd']

li = ["a", "b", "c", "d", "e", "c"]
li.remove("c")
print(li)  # ['a', 'b', 'd', 'e', 'c']

li = ["a", "b", "c", "d", "e", "c"]
del li[2]
print(li)  # ['a', 'b', 'd', 'e', 'c']

li = ["a", "b", "c", "d", "e", "c"]
li.clear()
print(li)  # []
1.5.3 改

按照索引或切片直接修改

li1 = ["a", "b", "c"]
li1[2] = "6666"
print(li1)  # ['a', 'b', '6666']
li1[1:2] = ["x", "y", "z"]
print(li1)  # ['a', 'x', 'y', 'z', '6666']
1.5.4 查

按照索引、切片、遍历查找

遍历:

  • 元素遍历
  • 索引遍历
  • 枚举遍历:enumerate( ),对于一个可迭代/可遍历的对象(如列表、字符串等),将其组成一个索引序列,利用它,我们可以同时获得索引和值
# 元素遍历
li = ["a", "b", "c", "d", "e", "c"]
for i in li:
    print(i, end=" ")
# a b c d e c

# 索引遍历
li = ["a", "b", "c", "d", "e", "c"]
for i in range(len(li)):
    print(li[i], end=" ")
# a b c d e c

# 枚举遍历
li = ["a", "b", "c", "d", "e", "c"]
for i in enumerate(li, 2):
    print(i, end=" ")
# (2, 'a') (3, 'b') (4, 'c') (5, 'd') (6, 'e') (7, 'c')
li = ["a", "b", "c", "d", "e", "c"]
for index, value in enumerate(li, 2):
    print(index, value, end=" ")
# 2 a 3 b 4 c 5 d 6 e 7 c
练习:

1.input( )函数实现往空列表中添加元素,当输入“q”的时候,结束输入,并返回列表。

2.随机生成30个1`10的随机整数,并统计每个数出现的次数,返回的结果形式为[[0,3],[1,4]…]

#1
li = []
while True:
    sr = input("请输入元素(输入“q”表示结束):")
    if sr == 'q':
        break
    else:
        li.append(sr)
print(li)

#2 方法一
import random
rand_int = []
result_li = []
for i in range(30):
    rand_int.append(random.randint(0,10))
for i in range(0,11):
    result_li.append([i,rand_int.count(i)])
print(result_li)

#2 方法二
import random
li = [[0, 0], [1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0], [9, 0], [10, 0]]
for i in range(30):
    num = random.randint(0, 10)
    li[num][1] += 1
print(li)
1.6 赋值与深浅拷贝
  • 赋值赋值是对对象的引用
la = [1,2,3,4,5,'a',['b1','b2']]
lb = la
print(id(la))   #1915507906504
print(id(lb))   #1915507906504
la[5] = "aaa"
print(la)       #[1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']]
print(lb)       #[1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']]
  • 浅拷贝会创建新对象,内容是原对象的引用

    三种实现方法:

    • 切片操作[ : ]

    • 工厂函数list(li)

    • copy模块内的copy函数

      la = [1,2,3,4,5,'a',['b1','b2']]
      lb2 = la[:]
      print(id(la))       #2784803493960
      print(id(lb2))      #2784804309832
      
      import copy
      lb_copy = copy.copy(la)
      print(id(la))       #2784803493960
      print(id(lb_copy))  #2784805803720
      
      la.append("test")	#添加原子类型,不会影响lb_copy和lb2
      print(la)           #[1, 2, 3, 4, 5, 'a', ['b1', 'b2'], 'test']
      print(lb2)          #[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
      print(lb_copy)      #[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
      
      la[5] = 'aaa'
      print(la)       #[1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']]
      print(lb_copy)  #[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
      
      la[6][1] = 'bbb'
      print(la)       #[1, 2, 3, 4, 5, 'aaa', ['b1', 'bbb']]
      print(lb_copy)  #[1, 2, 3, 4, 5, 'a', ['b1', 'bbb']]
      
  • 深拷贝

    import copy
    la = [1,2,3,4,5,'a',['b1','b2']]
    lb_deepcopy = copy.deepcopy(la)
    print(id(la))           #2351498155784
    print(id(lb_deepcopy))  #2351498157064
    
    la[5] = 'aaa'
    print(la)               #[1, 2, 3, 4, 5, ['aaa'], ['b1', 'b2']]
    print(lb_deepcopy)      #[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
    
    la[6][1] = 'bbb'
    print(la)               #[1, 2, 3, 4, 5, 'aaa', ['b1', 'bbb']]
    print(lb_deepcopy)      #[1, 2, 3, 4, 5, 'a', ['b1', 'b2']]
    

浅拷贝相当于我们只拷贝了一层,修改外层元素,就会修改引用,让它们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置

深拷贝拷贝对象的所有元素,包括多层嵌套的元素。因此,是开辟了一个新的内存储存区,和数据源没有关系了

1.7 列表解析式和列表生成式
格式:
[exp for iter_val in iter]

列表生成式:用来生成列表的特定的语法形式

sr = "城市学院"
print([ord(x) for x in sr])

实现原理:

迭代 iter 中的每一个元素,每迭代一次的结果赋值给 iter_val ,再通过 exp 运算得到一个新的值,最后所有通过表达式计数的值以一个列表的形式返回

补充:

三目运算符

y = 10
x = y + 1 if y > 10 else y - 1
print(x)
带过滤功能格式
[exp for iter_val in iter if if_condtiom]

如:

print([i for i in range(10) if i % 2 == 0])
嵌套
name = ["Tom","Jack","Lucy"]
subject = ["Python","Java","C","C++"]
print([[i,j] for i in name for j in subject])

二、语句补充

2.1 print()函数查看帮助文件
>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

语法格式

 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

等价于

print(value1,value2,...,valuen,sep=' ', end='\n', file=sys.stdout, flush=False)

如:

a,b,c = 1,2,3
print(a,b,c,sep = '*')		#1*2*3
for i in range(3):
    print(i,end = '*')		#0*1*2*
2.2 格式化字符串
%号格式化
print("%d" % 666)       #666
print("His name is %s, his age is %d." % ("Tom", 18))       #His name is Tom, his age is 18.
print("His name is ","Tom", "his age is",18,".")            #His name is  Tom his age is 18 .
print("His name is "+"Tom"+ "his age is"+str(18)+".")       #His name is Tomhis age is18.
占位符
格式描述
%d有符号的整数
%s字符串
%c字符及ASCII码
%o无符号八进制整数
%x/%X无符号十六进制整数
%e/%E浮点数,科学计数法
%f浮点数

% 格式化字符串 用%匹配参数,注意个数一一对应

print("%d%%"%100)		#100%
2.3 format格式化
  • 位置映射
print("{}:{}".format('Tom',18))                 #Tom:18
print("name:{},age:{}".format('Tom',18))        #name:Tom,age:18
  • 关键字映射
print("name:{},age:{},{address}".format('Tom', 18, address="Hangzhou"))  # name:Tom,age:18,Hangzhou
  • 元素访问
print("第一个元素是{0[0]},第二个元素是{0[1]},第三个元素是{0[2]},\
第四个元素是{1[0]}.".format(('www.','google.','com'),("baidu.","com")))
#第一个元素是www.,第二个元素是google.,第三个元素是com,第四个元素是baidu..
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值