DAY 6 Python基础: list and tuple 2018-06-19

01-list1

02-list_add

03-list_delete

04-list_operation

05-list function and usage method

06-tuple


01-list1

python中的数据类型:数字、字符串、列表、元组、字典、集合(序列)(容器类型的数据)
列表(数组):一个列表可以存储多个不同类型的数据
列表存储数据的方式:将多个数据放到以[]中,多个数据之间用逗号隔开
列表特点:列表是可变的(指的是里面的元素的个数和值可变)
[]是列表的标志

1.1.声明一个列表

声明了一个列表list1,有5个元素,分别是1,2,3,10.9,'abc'

list1 = [1, 2, 3, 10.9, 'abc']
print(list1)

声明一个空的列表

list2 = []

1.2.获取列表元素

a.获取单个元素(通过元素对应的下标)

下标的范围:0~(元素个数-1);
通过下标获取列表元素的时候,下标不能越界

print(list1[0])  # 获取下标是0的元素
print(list1[3])  # 获取下标是3的元素
print(list1[-1])    # 获取最后一个元素
# print(list1[5])   # IndexError: list index out of range 索引错误:超出范围的列表索引

b.获取列表中的部分元素(切片)

列表名[开始下标:结束下标]
获取到的是从开始下标到结束下标前的所有元素,组成的列表

list3 = [2, 10.5, 'a', 'abc', 10, 'dg',34 , 3]
print(list3[1:4])   # 获取下标为1开始到下标3的所有的元素
print(list3[:4])    # 获取从第一个元素开始到下标为3的所有元素
print(list3[2:])    # 获取从下标为2开始到列表最后的所有元素
print(list3[:])     # 获取列表开始到结束的所有元素

列表名[开始下标:结束下标:步长]

print(list3[0::2])  #从下标为0开始,每2个元素取一个

注意:
如果 步长 = -1,切片方式为从开始下标到结束下标倒着去取值(结束下标对应值取不到),且开始下标值>=结束下标值
元组(tuple)和字符串(str)同理

t1 = (1, 2, 3, 4, 5, 6, 7)
t2 = t1[4:1:-1]
print(t2)    # value:(5, 4, 3)

c.遍历列表(for 循环)

list4 = [1, 2, 3, 4, 5]
for item in list4:
    if item % 2 == 0:
        print(item)

计算列表中所有元素的和

sum1 = 0
for item in list4:
    sum1 += item
print(sum1)

同时取到列表中元素和下标
使用while计算下标为奇数元素的和

while x < len(list4):
    if x % 2 == 0:
        x += 1
        continue
    sum1 += list4[x]
print(sum1)

02-list_add

2.1.append方法:列表名.append(元素)

append() 是将元素添加到列表的最后的

list1.append('abc')
print(list1)

list1.append(10)
print(list1)

练习:找出列表中[1,34,5,6,89,3,2,4]所有的偶数,并且保存起来

list1 = [1, 34, 5, 6, 89, 3, 2, 4]
list2 = []
for item in list1:
    if item % 2 == 0:
        list2.append(item)
print(list2)

2.2.insert: 列表名.insert(下标,元素)

在指定的下标前插入指定的元素

ist3 = [1, 2, 3, 4, 5, 6, 7, 8]
list3.insert(1, 'a')
print(list3)

练习:通过insert在4和5之间插入元素'b';再在8后面插入元素'4'

list3.insert(5, 'b')
list3.insert(10, 'c')   # 当下标大于等于列表的长度,会插入到列表的最后
list3.insert(0, 'd')    # 在列表的最前面插入一个元素
print(list3)

===================修改元素===================

修改元素:通过下标拿到对应的元素,然后重新赋值

list1 = [1, 2, 3, 4, 5]
list1[1] = 20
print(list1)

让列表中的所有元素变为原来的2倍

for i in range(0,len(list1)):
    list1[i] = list1[i]*2
print(list1)

03-list_delete

3.1.del语句:在python中,del可以删除任何内容

a.del语句删除列表元素:del 列表名[下标]

str1 = 'Hello'
list1 = ['a', str1, 10+20, 'b', True]
# 删除下标为1的元素
del list1[1]
print(list1)

# del删除的时候下标不能越界
# del list1[20]

练习删除列表中所有的偶数
通过下标删除要注意下标的重新分配

list2 = [1, 2, 3, 4, 5, 6, 7, 8]
index = 0
while index < len(list2):
    if list2[index] % 2 == 0:
        del list2[index]
    else:
        index += 1
print(list2)

b.删除列表中字符串

isinstance(变量,类型):判断指定变量、值是否是指定类型
str(字符串)、int(整型)、float(浮点型)、bool(布尔)、complex(复数)、list(列表)、tuple(元组)、dict(字典)、set(集合)

re = isinstance(2+3i,complex)   # 获取'aa'是否是字符串
print(re)

删除列表中的 字符串

list3 = ['a', 1, 20, 'pp', 19.3, 'ohk']
index = 0
while index < len(list3):
    if isinstance(list3[index],str):
        del list3[index]
    else:
        index += 1
print(list3)

3.2.通过remove方法删除指定元素

格式:列表名.remove(元素)

list4 = ['a', 'b', 'c', 1, 2, 3]
list4.remove('c')
print(list4)

使用remove删除列表元素的时候,如果指定的元素在列表中有多个,只删除第一个

list4 = ['a', 'b', 'c', 1, 2, 3,'c']
list4.remove('c')
print(list4)

删除列表[1, 3, 4, 7, 8, 2, 3, 4, 1]中所有的奇数

list5 = [1, 3, 4, 7, 8, 2, 3, 4, 1]
index = 0
while index < len(list5):
    if list5[index] % 2 != 0:
        list5.remove(list5[index])
    else:
        index += 1
print(list5)

3.3.使用pop()方法删除指定下标的元素

格式1:列表名.pop(下标) 从列表中取出指定下标对应的元素
格式2:列表名.pop() 从列表中取出最后一个元素

list6 = [1, 2, 3, 4, 5, 6]
delitem = list6.pop(1)      # 将下标是1的元素从list6中取出,并且存到变量delitem中
print(delitem,list6)

del_item2 = list6.pop()
print(del_item2,list6)

将一个列表[1, 2, 3, 4, 5, 6]中的元素全部取出放到另一个列表里变成[6, 5, 4, 3, 2, 1]
方法一:

list6 = [1, 2, 3, 4, 5, 6]
list7 = []
index = 0
while index < len(list6):
    # 从前往后取
    del_item = list6.pop(index)
    list7.insert(0,del_item)
print(list6, list7)

方法二:

list6 = [1, 2, 3, 4, 5, 6]
list7 = []
while len(list6) > 0:
    # 从后往前取
    value = list6.pop()
    list7.append(value)
print(list6,list7)

方法三:

list6 = [1, 2, 3, 4, 5, 6]
list7 = []
for _ in range(0,len(list6)):
    value = list6.pop()
    list7.append(value)
print(list6, list7)

04-list_operation

4.1.求列表的长度:len(列表名)

list1 = [1, 2, 3, 4, 5, 6]
length = len(list1)
print(length)

4.2.列表的+操作

列表1 + 列表2 : 将列表1和列表2中的元素,组合成一个新的列表

list2 = [1, 2, 3, 4] + ['a','b']
print(list2)

4.3.列表的*操作

列表整数 : 将列表中元素重复指定次数,组合成一个新的列表*

list3 = [10, 2] * 4
print(list3)

4.4.in 和 not in

元素 in 列表:判断指定的元素是否在指定的列表中

list4 = ['abc', '123', 1, '0o', 10]
re = 'abcd' in list4
print(re)

元素 not in 列表:判断指定的元素是否不在指定的列表中

5.5.获取列表中最大、最小的元素

格式: max(列表)、min(列表)、sum(列表(只能是数字类型))

list5 = [1, 34, 6, 78, 90, 12, 35]
max1 = max(list5)
print(max1)

list6 = ['abc', 'a', 'b', 'aaa']
print(max(list6))

注意:获取最大值或者最小值的时候,列表中的元素的类型要么都是数字,要么都是字符串

 list7 = ['a', 'b', 1, 3]
print(max(list7))   #TypeError: '>' not supported between instances of 'int' and 'str'

练习:求表演的平均分数5个裁判,给表演打分。去掉一个最高分,去去掉一个最低分,求最后的平均分

import random
list8 = []
for _ in range(0,5):
    value = random.randint(0,10)
    list8.append(value)
print(list8)
max1 = max(list8)
list8.remove(max1)
min1 = min(list8)
list8.remove(min1)
# 计算平均数
# sum(列表):计算列表中所有的元素的和
print(sum(list8)/len(list8))

4.6.将其他的数据转换成列表

格式: list(数据)

list1 = list('abcdef')
print(list1)

将range()转换成列表

list2 = list(range(10))
print(list2)

将列表转换成字符串(不是仅仅将列表的元素拼接成字符串的,而是将整个列表所有的结构都作为字符串的字符

str1 = str([1, 2, 3, 'a'])
print(str1)
print(list(str1))   # value:['[', '1', ',', ' ', '2', ',', ' ', '3', ',', ' ', "'", 'a', "'", ']']

05-list function and usage method

5.1.count(obj):统计某个元素在列表中出现的次数

list1 = [1, 1, 1, 2,]
print(list1.count(1))

5.2.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

seq -- 元素列表

list2 = ['a', 'b']
list2.extend(list1)
print(list2)

5.3.index(obj):从列表中找出某个值第一个匹配项的索引位置(下标)

list3 = [1, 2, 3, 4, 3]
print(list3.index(3))

5.4.reverse():反向列表中元素,函数的返回值为空

print(list3,list3.reverse())

5.5.sort(cmp,key,bool):对原列表进行排序

list3.sort(reverse = True)   #降序
print('5.---', list3)
list3.sort()      #升序
print(list3)

5.6.clear():清空列表

list3.clear()
print(list3)

5.7.copy():复制列表

list7 = list3.copy()
print('7.===', list7)

06-tuple

元组(tuple)就是不可变的列表
列表中除了增加、修改和删除相关的操作都适用于元组
什么时候用?就是存到容器中的数据不能被修改的时候使用

例如:星期几对应的值

6.1.声明元组

tuple1 = (1, 2, 3, 4, 'aa', True)
print(tuple1)

6.2.只有查可用,和列表一致

print(tuple1[0])
print(tuple1[-1])
print(tuple1[0:3])

for item in tuple1:
    print(item)

for index in range(len(tuple1)):
    print(tuple1[index])

6.3.+,*可以用(形成一个新的元组,原来的元组不变)

print((1, 2, 3) + ('a', 'b', 'c'))
print((1, 2, 3)*3)

6.4.in , not in

a = 10
print(a in (10, 2))
print(a not in (10, 2))

6.5.不支持增、删、该

练习:输入1~7的数字,对应输出是星期几。例如:输入1,就是输出“星期一”

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

推荐阅读更多精彩内容