第六章 数据类型(列表和元组)

"""

第六章 数据类型(列表和元组)

"""

# 列表 list

# 一、列表的定义

# 需求:想存储一个人的名字

name1="tom"

name2="jerry"

name3="kate"

# 使用多个字符串存储多个名字问题:

# (1)变量名也是需要占用内容

# (2)需要查找第50个人的名字谁


# 列表:可以存储多个数据元素(计算机中对于可以存储多个数据元素的数据类型---集合类型)

# 列表的定义:列表名字=[元素,]

names=["tom","jerry","kate",1,3,[4,5]]

print(type(names),names)

names_null=[]

print(type(names_null),names_null)


print(len(names))

print(len(names_null))


print(bool(names),"当names中有元素时,转换成布尔型")

print(bool(names_null),"当names中有没有元素时,转换成布尔型")


# 应用

# if len(names_null)==0:

# if not names_null:

#

# if len(names_null) != 0:

# if  names_null:




# 列表的内存结构

# 列表的名字,列表对象,列表元素(字符串、数值、列表。。。)

"""

列表的相关特性:

(1)列表中的元素可以是多种类型

(2)列表的元素是有序

(3)列表是可变的数据类型,列表中的元素是可以修改的。

"""



#二、列表的相关操作

# 1. 运算符 +  *  in  not in   is  is not  ==  >  <=

# + 合并 列表的+新创建列表

# [1, 3, 4, 5]

a=[1,3]

b=[4,5]

print(a+b,a,b)  #千万注意不是:[[1,3],[4,5]]



#* 重复 新创建列表,将原列表中的元素进行重复

print(a*3,a)      #千万注意不是:[[1,3],[1,3],[1,3]]



# in  not in:元素是否存在在当前的列表中

# 列表的元素:数值、字符串、字节、列表。。。。

print(1 in a)

x="abc"  # 对于字符串来说, 字符串的元素仍然是字符串

print("a" in x)


names=["tom","jerry","kate",1,3,[4,5]]

print(4 in names)



# ==  is

# 列表作为可变的数据类型a和b不是同一个对象 is返回False  ==返回True

a=[1,3,4]

b=[1,3,4]

c=a

print(id(a),id(b),id(c))



# > < 按照元素逐个比较

print([1,2,3]<[2,3])

print([1,2,3]<[1,3])



# 2. 索引:获取单个元素

# 语法:列表名[index]

# index: 第一个元素从索引为0开始,正数:从左到右  负数:从右到左

# 索引不能越界  范围[-len(li),len(li)-1]

print(a[1])

print(a[-1])

# print(a[-100])

print(id(a[0]),id(b[0]))

x=1

print(id(x))


# 列表的元素是否可变

# s="abc"

# s[0]="6"


l=[1,2,3]

l[0]="6"

print(l)



#练习

# (1). 将下面列表在中tom和jerry元素位置对调

names=["tom","jerry","kate",1,3,[4,5]]

print(id(names))

names[0],names[1]=names[1],names[0]

print(names)

print(id(names))


# (2).新定义一个names_new,画出内存图。

names_new=["tom","jerry","kate",1,3,[4,5]]

print(id(names[5]),id(names_new[5]))

names_new2=names_new



# 3. 切片:获取列表中的多个元素:依然是列表

# 列表名[start:end]

# 包含start,不包含end

# start:正数、负数、0,start省略是0

# end:正数、负数、0,end省略是len(li)

# 默认情况下获取的时候,start在end的左侧

names=["tom","jerry","kate",1,3,[4,5]]

print(names[1:3])


# 字符串的索引获取的依然是单个字符串

s="hello"

# 列表的索引获取的是单个元素

l=[1,2,3]

print(s[0],l[0])


# 字符串的切片获取出来依然是字符串

# 列表的切片 获取出来依然是列表

print(s[1:3])

print(l[1:3])

print(l[-100:100])


# 使用列表切片进行对列表元素的修改。

# 注意:切片直接跟列表进行绑定,尽量不要跟单个元素进行绑定

# 如果单个元素属于序列类型,这时候,列表的切片能够自动将序列转换成列表的元素

# 如果单个元素不是序列类型(可迭代对象),这时候会出错。

l=[1,2,3]

# l[1:3]=["a","b","c"]

# l[1:3]="a"  # 不建议这样写

l[1:3]=["a"]  # 建议这样写

# l[1:3]=100 # 报错

print(l)


# l[1]=["a","b","c"]

# print(l)



# 三、列表中的相关方法

li=["a","b","c","d","e"]

# 1.  添加

# +合并:新创建列表进行合并

print(li+["z"],li)


#append对列表中的元素进行追加,追加到列表的尾部,原地修改

#print(li.append("z")) # 注意使用的时候,append的方法返回值是None

li.append("z")

print(li)


# replace字符的相关方法都不是原地修改,都是新创建字符串

# s="abc"

# print(s.replace("a","d"))

# print(s)


# insert插入元素,可以向列表中的index位置,插入object元素

# li.insert(index,object)

li=["a","b","c","d","e"]

li.insert(2,"z")

print(li)


# 练习:使用insert能不能达到append效果

# li.append("happy")

print(li)

# li.insert(0,"happy")

# print(li)

li.insert(len(li),"happy")

print(li)



# 2. 删除

# (1)pop

# li.pop(index)  可以删除index指定位置的元素,一次只能删除一个元素

# pop的返回值是删除元素的内容

# index如果省略,会默认删除列表中的最后一个元素

print(li.pop(1))

print(li)

li.pop()

print(li)

# li.pop(100) # 索引越界报错


# (2)remove:根据传入参数的内容删除指定元素,一次只能删一个,只删除第一次出现的元素

#  remove如果指定元素不存在,会报错

li.remove("c")

print(li)

# li.remove("new")

li=["a","b","c","d","e","a"]

li.remove("a")

print(li)


#3. 检索

# li.index(要检索的内容,起始位置,终止)

# 包含起始位置, 不包含终止

print(li.index("d"))

# print(li.index("dd")) #如果要检索的内容不存在,会报错


#4.统计

li=["a","b","c","d","e","a"]

print(li.count("a"))


#5.反向:原地反向

li.reverse()

print(li)


#6.排序sort: 原地排序

# 列表中的元素类型不一致,不能进行sort排序。

# reverse参数:默认升序False

# 降序reverse=True

li=["a","f","c","u","e","t"]

# li.sort()

# print(li)

li.sort(reverse=True)

print(li)


#降序可以通过先调用sort升序排序,再调用reverse反向


# print(3>"a")

# li=[3,"a"]

# li.sort()


# 7.列表的复制

#(1)赋值

#(2)copy方法

#(3)切片

#(4)copy包下的copy和deepcopy

#(5)*


# 使用赋值进行复制

li=[1,2,3,[4,5]]

li1=li

print(id(li),id(li1))

li[0]="new"

# n=li[3]

# n[0]="new"

li[3][0]="new"

print(li,li1)


# 使用列表的copy方法进行复制

# 只负责复制当前的列表对象(只复制第一层)

li=[1,2,3,[4,5]]

li2=li.copy()

print(id(li),id(li2))

li[0]="new"

li[3][0]="new"

print(li,li2)


"""

第六章  数据类型  元组 tuple

"""

# 元组:带了枷锁的列表

# 为了保证数据的安全性,出现了元组

# 元组在一定意义上跟列表类似,但是不能修改的列表

# 元组的元素不能进行修改


# 一、元组的创建

# 定义元组: 元组名=(元素,)

a=(1,2,3)

print(type(a),a)

b=1,2,3

print(type(b),b)


# 二、元组的操作

# 1. 运算符

# 跟列表一样 + * in  not in  is is not  ==  < >=

a=(1,2)

b=(3,4)

print(a+b,a,b)


print(a*3)

# 元素的合并和重复


print(1 in a)

print(1 in ((1,2),3,4))


# is  ==

a=(1,2,3)

b=(1,2,3)

c=a

print(id(a),id(b),id(c))


print((1,2,3)<(2,3))


# 2. 索引、切片

a=(1,2,3)

print(a[1])

print(a[1:3])

# a[1]="new"


# 如果元组中的元素是可变类型,对于可变类型中的元素是能修改

a=([1,2,3],4,5,6)

a[0][0]="new"

print(a)


# 三、相关方法

a=(1,2,3,1,1,1)

# 统计

print(a.count(1))

#返回元素的位置

print(a.index(1))

# print(a.index(10))  找不到会报错

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

推荐阅读更多精彩内容