ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第一章 1.4 数据类型之列表

2019-11-19 20:57:04  阅读:163  来源: 互联网

标签:1.4 下标 list 元素 数据类型 列表 scores print


一、什么是列表

1、列表

列表是python提供的容器型数据类型;以中括号[]作为容器标志;
里面多个元素用逗号隔开:[1,2,3,4,5,6],元素的个数就是列表的长度
列表是可变的、 有序的 ;

  • 可变性:(元素的个数,元素的值,元素的顺序)-元素支持增、删、改操作;
  • 有序性:支持下标操作

2、列表元素:

列表中的元素可以是任何类型的数据(赋值语句除外)
同一个列表中的元素的类型可以不一样
例:[123,12.4,True,'sdf',[1,4,5],(10,19),{'name':100},{1,2}]



二、列表的相关操作

1、查 ------> 获取列表中的元素

1)、获取单个元素

①:语法:
列表 [ 下标 ]
②:说明:
列表----------->可以是列表值、保存列表的变量、结果是列表的表达式
中括号[ ]------>固定写法
下标------------>列表中的每个元素都会对应一个下标,来表示元素在列表中的位置
下标范围:
 0到列表长度减一 - 从前往后以此增加,0表示第一个元素
 -1到负列表长度 - 从后往前依次递减,-1表示最后一个元素
IndexError:list index out of range - 下标越界报错

2)、获取部分元素(切片) - 切片的结果还是列表

①:语法:
列表 [ 开始下标:结束下标:步长 ]
列表[m:n:step] - 获取range(m,n,step)产生的数字序列作为下标去列表里取元素
②:其他用法:

  • 省略步长(默认步长是1):列表[开始下标:结束下标];[m:n]
  • 省略开始下标/步长:列表[:结束下标:步长];[:n:step]/列表[:结束下标][:n]
     如果步长为正,从前往后取;如果步长为负,从后往前取
  • 省略结束下标/步长:列表[开始下标::步长];[m::step]/列表[开始下标:][m:]
     从开始下标取到最后一个
  • 省略开始和结束下标:列表[::步长];[::step]/列表[:]

③:遍历列表:

  • 直接遍历:
    for 变量 in 列表:
      循环体
  • 通过下标遍历
    length = len(列表)
     for 变量 in range(length):
      元素 = 列表[变量]

    例:

list = [1, 30, 69, 6, 58, 77, 106]
print(list[4]) # 58
print(list[2:5]) # [69, 6, 58]
print(list[2:5:2]) # [69, 58]
print(list[:4])
prine(list[3:])
print(list[:])

2、增 ------> 添加元素

1)、列表.append [ 元素 ] ------> 在列表的最后添加元素
2)、列表.insert [ 下标 ,元素 ] ------> 在列表指定下标位置添加元素
list = ['肖申克的救赎', '功夫', '霸王别姬', '卧虎藏龙', '天方异谭', '恐怖游轮']
print(list.append['我不是药神'])
print(list.insert[-3, '大圣归来'])

3、删 ------> 删除列表元素

1)、del列表[下标]------>删除指定下标的元素
2)、列表.remove(元素)------>删除列表中指定的元素

注:若列表中没有指定的元素,报错
   若列表中有多个相同的指定元素,删除第一个

3)、列表.pop()------>取出列表中最后一个元素
   列表.pop(下标)------>取出列表中指定下标的元素

注:pop()中,元素是被取出,并没有被删除;只是对列表来说,元素减少了,如果将pop取出的值用变量保存并打印出来,能得到该元素

num = [2, 50, 8, 9, 43]
prunt(num.pop(2)) # 8
print(num) # [2, 50, 9, 43]

练习

# 练习下面这个列表中小于60的元素
# 答案:[89, 90, 78, 60, 87]
方法一、
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
for num in scores[:]: # 如果在原列表中删除,那么原列表的元素下标会不断变化,
#最后程序虽然不报错,但是结果不准确
  if num < 60:
    scores.remove(num)
print(scores)

方法二、
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
scores2 = scores[:]
length = len(scores2)
t = 0
for x in range(length):
  if scores2[x] < 60:
    scores.remove(scores[x])
  else:
    t += 1
print(scores)

4、改------>修改列表中的元素

列表[下标] = 值------>修改列表中指定的元素

练习:将下列表中小于60的分数换成不及格
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
length = len(scores)
for x in range(length):
    if scores[x] < 60:
        scores[x] = '不及格'
print(scores)



三、列表运算

1、数学运算

1)、加法

  • 新列表中的元素是两个列表中元素的合并
    2)、乘法
  • 列表中的元素重复N次,产生一个新的列表
list1 = [1, 2, 3, 4]
list2 = ['王二', '张三', '李四']
print(list1 + list2)
print(list1 * 3)

2、比较运算符

  • 等于和不等 == 、!=
    元素的内容,个数,顺序都一样才相等
  • 大于、小于 > >= < <=
    两个列表的比较:先比较第一队元素的数值大小,第一队数值的大小就是列表的大小,如果第一队数值相等或者比较不了大小,比较第二队
li1 = [1,2]
li2 = [1,2]
print(li1 == li2)
print(li1 == li2) # print(id(li1) == id(li2))

3、is / in / not in

  • is 判断两个列表的地址是否相等
  • 元素 in 列表------>判断列表中是否存在指定元素
  • 元素 not in 列表------>判断列表中是否不存在指定元素
names = ['小红', '小强', '小明']
print('小明' in names)
print('李四' in names)

4、列表相关函数

len / max / min / list / sum

1)、len(序列)------>获取序列的长度(元素的个数)
2)、max(序列)\min(序列)------>获取序列中最大值和最小值

对序列的要求:
  1.序列中所有元素的类型一致(数字看成一个类型)
  2.元素本身支持比较大小

3)、sum(数字序列)------>求序列中所有元素的和

(要求序列中的元素全是数字)

4)、list(序列)------>将其他类型的序列转换成列表;序列是容器型数据



四、列表的其他操作

1、列表.count(元素)------>统计列表中指定元素的个数
2、列表.extend(序列)------>将其他序列的元素全部添加到列表中
3、列表.index(元素)------>获取指定元素在列表中的下标
  • a.若元素不存在,报错
  • b.若元素有多个
4、列表.revers()------>将原来的列表倒序(反过来)
5、列表.clear()------>清空列表
  • 清空列表用clear函数,不直接赋值为[]。
6、列表.copy()------>复制列表中的元素,产生一个新的列表,赋值后两个相互不影响
7、列表.sort()------>将列表中的元素从小到大排序(直接修改列表中元素的顺序,不产生新列表)
  • 列表.sort(revers=True) ----- 将列表中的元素从大到小排序
  • 列表.sort(revers=True) 相当于 列表.sort() ;列表.revers()
8、sorted(序列)------>不修改原序列,排序后产生一个新的列表(从小到大)
  • sorted(序列,reverse=True) 从大到小

标签:1.4,下标,list,元素,数据类型,列表,scores,print
来源: https://www.cnblogs.com/anjhon/p/11892265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有