第四天:列表

列表

基础语法

定义

  • python提供的一种容器型数据类型,以[]作为容器标志,多个元素以逗号隔开

特点

  • 列表是可变的(元素的个数和值),元素支持增删改操作
  • 列表中的元素可以是任何类型的数据
  • 同一个列表中可以放入不同类型的数据

列表操作

1.获取单个元素

  • list[元素下标]

2.元素下标

  • 从前往后列表下表依次位:0, 1, 2, 3, 5。。

  • 从后往前列表下表依次位:-1, -2, -3, -4, -5。。

3.切片(获取部分元素)

列表[开始下标:结束下标:步长]
注意:列表切片的结果仍是一个列表,是原列表的一部分
     步长位正,从前往后取;那么开始下标所在位置必须在结束下标所在的位置的前面
     步长位负,从后往前取;那么开始下标所在位置必须在结束下标所在的位置的后面
a.列表[开始下标:结束下标]
b.省略开始下标  --  列表[:结束下标:步长] / 列表[:结束下标]  ----如果步长为正从第一个元素开始往后取     ----如果步长为负从最后一个开始往前取
c.列表【开始下标::步长】    ---从该方向取到最后一个元素
d.列表【::步长】/列表【:】   ---看步长

4.遍历列表

4.1 直接for循环遍历列表获取元素

4.2 如果需要使用 下标,则通过遍历下标 来获取元素

for 变量 in range(len(列表)):
    元素 = 列表[变量]

注意:

​ 切片时,下标可以越界

list = [1, 2, 3, 4, 5]
print(list[2:1000])
# 不会报错,执行结果为[3, 4, 5]

元素增删改

1.增

1.1 列表.append(元素)   -在指定的列表的末尾添加一个元素
1.2 列表.insert(下标,元素)  -在指定下标前面插入指定元素
list = [1, 2, 3, 4]
list.append(5)
print(list)

list.insert(3, 6)
print(list)

2.删

2.1 del 列表[下标]   -删除指定下标的元素
2.2 列表.remove(元素)  - 删除列表中的指定元素
    注意:a.如果元素不存在会报错  b.如果元素在列表中有多个,只删除第一个
2.3 列表.pop()   -  取出列表中的最后一个元素,返回被取出的元素
    列表.pop(下标)  -  取出指定下标的元素,返回被取出的元素

3.改

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

作业

1.已知一个数字列表,求列表中心元素。

text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0   #list列表的下标
str_num = '' #接收拆分的字符
list = []
for index in range(len(text)):
    if text[index] != ',' and text[index] != '.':
        str_num += text[index] #拼接逗号前或逗号之间的字符
    elif text[index] == ',':
        list.append(str_num) #将拼接好的字符填进列表中
        str_num = ''  
        num += 1
    else:
        list.append(str_num)
        break  
print(list)

if len(list) % 2 == 0:
    #中心元素为下标为 len(list)/2 和 len(list)/2 + 1的两个元素
    print(list[int(len(list)/2 - 1)], list[int((len(list)/2))])
else:
    print(list[len(list) // 2])

结果:


1.png

结果:

2.已知一个数字列表,求所有元素和。

text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
    if text[index] != ',' and text[index] != '.':
        str_num += text[index]
    elif text[index] == ',':
        list.append(str_num)
        str_num = ''
        num += 1
    else:
        list.append(str_num)
        break
print(list)

sum = 0
for index in range(len(list)):
    sum += int(list[index])

print(sum)

结果:


2.png

3.已知一个数字列表,输出所有奇数下标元素。

text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
    if text[index] != ',' and text[index] != '.':
        str_num += text[index]
    elif text[index] == ',':
        list.append(str_num)
        str_num = ''
        num += 1
    else:
        list.append(str_num)
        break
print(list)

for index in range(len(list)):
    if index % 2 != 0:
        print(list[index])

结果


3.png

4.已知一个数字列表,输出所有元素中,值为奇数的元素

text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
    if text[index] != ',' and text[index] != '.':
        str_num += text[index]
    elif text[index] == ',':
        list.append(str_num)
        str_num = ''
        num += 1
    else:
        list.append(str_num)
        break
print(list)

for num in list:
    if int(num) % 2 != 0:
        print(num)

结果:


4.png

5.已知一个数字列表,将所有元素乘二。

num = 0
str_num = ''
list = []
for index in range(len(text)):
    if text[index] != ',' and text[index] != '.':
        str_num += text[index]
    elif text[index] == ',':
        list.append(str_num)
        str_num = ''
        num += 1
    else:
        list.append(str_num)
        break
print(list)

list2 = []
for num in list:
    list2.append(int(num)*2)

print(list2)

结果:


5.png

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

names = ['张三', '李四', '大黄', '张三', '王五', '王朝', '马汉', '元芳', '张三', '陈九']
my_names = []
for name in names:
     if name not in my_names:
         my_names.append(name)
print(my_names)

结果:


6.png

7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表
例如: list1 = [97, 98, 99] -> list1 = ['a', 'b', 'c']

list = [123, 599, 942, 19658]
my_list = []
for num in list:
    my_list.append(chr(num))
print(my_list)

结果:


7.png

8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

score = [60, 75, 45, 88, 69, 92, 45, 73, 77, 56]
max = mix = score[0]
for sco in score[1:]:
    if sco > max:
        max = sco
    elif sco < mix:
        mix = sco
print(max, mix)    #找出最高分和最低分

score2 = []
for s in score:
    if s not in score2:
        if s == mix or s == max:
            continue
        else:
            score2.append(s)
print(score2)   # 去除最高分和最低分

# 求平均分
sum = 0
for x in score2:
    sum += x
ave = sum / len(score2)
print(ave)

结果:


8.png

9.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']

A = [1, 'a', 2, 'b', 3, 'c']
B = [1, 2, 3, 4, 5, 6]
C = []
for x in A:
    if x in B:
        C.append(x)
print(C)

结果:


9.png

10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600

nums = [19, 89, 90, 600, 1]
max = 0
for x in nums:
    if max < x:
        max = x
print(max)

结果:


10.png

11.获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

# 方法一:
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
sub = 0      #保存出现次数最多的值的下标
max = 0      #保存出现次数最多的元素,出现次数
temp = 0     #保存元素出现的次数
for index in range(len(nums)):
    for n in nums[:]:
        if n == nums[index]:
            temp += 1
        else:
            continue
        if max < temp:
            max = temp
            sub = index

print(nums[sub])

结果:


11.png
方法二:
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
nums_copy = []
temp = []

# 去除重复值,得到新数组
for x in nums:
    if x not in nums_copy:
        nums_copy.append(x)
print(nums_copy)

# 遍历新数组,得到每个值在原数组中出现的次数数组
for y in nums_copy:
    temp.append(nums.count(y))
print(temp)

# 比较得到出现次数最多的次数值下标
a = 0
max = 0
for index in range(len(temp)):
    if temp[index] > max:
        max = temp[index]
        a = index
print(max, a)
print(nums_copy[a])   #因temp 与 nums_copy一一对应,可通过temp中最大值的下标找到nums_copy中对应下标的值

结果:


12.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容

  • 1.基本数据类型int、float、bool、complex、str、list、dict、tuple、 set.....
    Smr_T阅读 382评论 0 0
  • 8月22日-----字符串相关 2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消...
    future_d180阅读 964评论 0 1
  • """1.分之结构ifif-elseif-elif-else if 条件:代码段 if 条件:代码段1else:代...
    LittleBear_6c91阅读 419评论 0 0
  • Python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合 容器...
    丫丫姑娘_b55e阅读 306评论 0 1
  • 列表序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字- 它的位置,或索引,第一个索引是0,第二...
    spyder_men阅读 743评论 0 0