复杂的数据类型

一、列表

1.列表介绍

列表,数据类型为list,可以存储多个不同种类的元素,其中,字符串元素需要加引号,且元素间要用逗号隔开。

在Python中,可以直接使用方括号创建,例如:

list_mix=['a',2,'c',4.5,'end']
#也可以是双引号

2.列表读取

在列表出生的时候,里面的每个元素就有都了对应的编号:

a2c4.5end
list_mix[0]list_mix[1]list_mix[2]list_mix[3]list_mix[4]
list_mix[-5]list_mix[-4]list_mix[-3]list_mix[-2]list_name[-1]

后文中将这个编号称为“下标”

读取单个元素

如果需要打印单一元素,例如c,就可以通过

list_mix=['a',2,'c',4.5,'end']
print(list_mix[2])

或者

list_mix=['a',2,'c',4.5,'end']
print(list_mix[-3])

的方式来实现。

读取列表的一部分

切片
切片相当于把列表中的一部分元素切出来,格式为list_mix[n: m :k],n为起始位置,m为结束位置,k为步长值。这种表达中,n默认为0,m默认为列表元素的个数,k默认为1。n、m、k想要保持默认时可以省略。

list_mix=['a',2,'c',4.5,'end']
print(list_mix[0:])
print(list_mix[:])
print(list_mix[::])
print(list_mix)
#这四中表达的输出结果是相同的
#结果均为['a', 2, 'c', 4.5, 'end']
print(list_mix[0::2])
print(list_mix[0:5:2])
#输出的结果相同
#结果均为['a', 'c', 'end']
print(list_mix[0:2])
print(list_mix[0:2:1])
#输出结果相同
#结果均为['a', 2]

#中括号内不可以为空
#list_mix[m]所代表的元素无法取到

复制列表
①用切片的方法进行列表复制:

list_mix=['a',2,'c',4.5,'end']
b=list_mix[:]

这种方式可以将当前的list_mix列表复制给b,尽管和list_mix有着相同的元素和排列方式,b却是一个单独的列表。此后对list_mix列表进行操作,不会再影响b列表。
②用赋值的方法进行列表复制:

list_mix=['a',2,'c',4.5,'end']
b=list_mix

这种方法是将list_mix的地址传递给b,b并不是新的列表。好比b和list_mix是两把一样的钥匙,计算机可以通过任何一把打开列表,此后再对列表进行操作时,无论通过b还是list_mix打开列表,结果也是一样的。

3.列表的修改

①增添元素
在末尾增加一个元素:append()

list_mix=['a',2,'c',4.5,'end']
list_mix.append('app')
print(list_mix)
#结果为:['a', 2, 'c', 4.5, 'end', 'app']

在指定位置增加一个元素:insert( )
使用insert()函数需要指明想要添加的位置和想要添加的内容

list_mix=['a',2,'c',4.5,'end']
list_mix.insert(3,'add')
#insert()函数里的3表示list_mix列表里的第三个元素
#因此这里是在c后面添加add
print(list_mix)
#结果为['a', 2,  'c','add', 4.5, 'end']

②删除元素
删除末尾元素:pop()
pop()的返回值是末尾元素值,因此可以保存被删除的元素

list_mix=['a',2,'c',4.5,'end']
deleted=list_mix.pop()
print(list_mix,deleted,deleted)
#输出的结果为['a', 2, 'c', 4.5] end

此外,pop()还可以删除掉指定下标的元素:

list_mix=['a',2,'c',4.5,'end']
list_mix.pop(2)
#删除list_mix列表中下表为2的元素:c
print(list_mix,deleted)
#输出的结果为['a', 2, 4.5, 'end']

删除指定下标的元素:del

list_mix=['a',2,'c',4.5,'end']
del list_mix[2]
#删除list_mix列表中下表为2的元素:c
print(list_mix)
#输出结果为['a', 2, 4.5, 'end']

删除只知道内容,不知道下标的元素:remove()

list_mix=['a',2,'c',4.5,'end']
list_mix.insert(3,'c')
print(list_mix)
list_mix.remove('c')
print(list_mix)
#输出结果为['a', 2, 'c', 'c', 4.5, 'end']
#          ['a', 2, 'c', 4.5, 'end']

从以上结果中可以看出,remove()只能删除第一个遇到的“c”,如果列表里有多个“c”,无法一次性通过remove()全部删除。

4.其他常用操作列表的函数

生成数字列表:list(),range(n,m,k)
这里n、m、k的含义与列表切片中的相同,表达方式也有一些近似。但需要注意的是range(,m,k)、range(n,k)、range(n,)这三种表达是错误的。

figure=list(range(10))
print(figure)
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#生成的数字列表中最大的元素一定小于m

figure=list(range(10,))
print(figure)
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

figure=list(range(2,10,2))
print(figure)
#结果为[2, 4, 6, 8]

figure=list(range(2,10))
print(figure)
#结果为[2, 3, 4, 5, 6, 7, 8, 9]

列表排序
①临时排序:sorted( )
sorted()函数只能暂时改变列表的顺序,执行完后,原来的列表顺序不变。

word=['zhang','chen','wang','chu']
print(sorted(word))
rank=sorted(word)
print(rank)
print(word)
#结果为:['chen', 'chu', 'wang', 'zhang'] 
#        ['chen', 'chu', 'wang', 'zhang'] 
#        ['zhang', 'chen', 'wang', 'chu']

②永久排序:sort()
sort()函数执行完后,原来列表的顺序发生永久性改变

word=['zhang','chen','wang','chu']
word.sort()
print(word)
#结果为:['chen', 'chu', 'wang', 'zhang']

③倒序排序:reverse( )
reverse( )函数可以将原列表改为倒序,这一改动也是永久性的。

word=['zhang','chen','wang','chu']
word.reverse()
print(word)
#结果为:['chu', 'wang', 'chen', 'zhang']

④列表求长:len()

word=['zhang','chen','wang','chu']
print(len(word))
#结果为:4

二、字典

1.字典的介绍

和列表一样,字典也是python中一种复杂的数据类型(dict)。这种数据类型有以下特点:

  1. 字典可以嵌套使用
  2. 字典中的元素成对出现,体现为键 (key)和值 (value)
  3. 键与值之间用冒号 :分隔,每个键值对之间用逗号 ,分隔
  4. 一个字典中每个键只能出现一次,而值可以重复出现
  5. 键只能使用英文的字符或字符串表示
    字典可以用花括弧{}创建,例如:
fc1={'a':90,'b':80,'c':60,'a':60}
fc2={'a':90,'b':80,'c':60}
print(fc1)
print(fc2)
#结果为{'a': 60, 'b': 80, 'c': 60}
       {'a': 90, 'b': 80, 'c': 60}

由以上结果可以看出,如果字典的键出现重复,计算机会记录第一次出现键的位置和第二次出现键的对应值。

2.字典的读取

①字典的遍历
一般有两种方法可以打印字典的全部内容,即

fc={'a':90,'b':80,'c':60}
print(fc)

又或者

print(fc.items())
#这两种方式输出的结果均为:{'a': 90, 'b': 80, 'c': 60}

②遍历键
想要遍历字典键可以使用key()函数,代码示例如下:

fc={'a':90,'b':80,'c':60,}
print(fc.keys())
#结果为:dict_keys(['a', 'b', 'c'])

③遍历值
想要遍历字典值可以使用value()函数,代码示例如下:

fc={'a':90,'b':80,'c':60}
print(fc.values())
#结果为:dict_values([90, 80, 60])

④字典取值
字典取值有两种方式,都需要依赖字典的键。
方法一
在字典变量后面加入“ [‘key’] ”以取得字典的值,示例如下

fc={'a':90,'b':80,'c':60,}
print(fc['a'])
#结果为:90

这种方法有一个缺点,如果输入的键不存在,那么代码运行时计算机会报错;
方法二
使用get()函数取值
当输入的键不存在时,返回为None

fc={'a':90,'b':80,'c':60}
print(fc.get('a'))
print(fc.get('d'))
#结果为:90
#       None

需要注意的是,get()函数可以传递两个参数。当写入是两个参数时,如果第一个参数为字典中的键,则无论第二个参数是什么,都只返回第一个键对应的值,示例如下:

fc={'a':90,'b':80,'c':60}
print(fc.get('a','b'),fc.get('a','a'),fc.get('a','d'))
#结果为:90 90 90

相似情况下,如果第一个参数不是字典中的键,get()函数将返回第二个值。但需要注意的是,这并不代表get()函数给字典加入了新的元素。示例如下:

fc={'a':90,'b':80,'c':60}
print(fc.get('d',100),fc)
#结果为:100 {'a': 90, 'b': 80, 'c': 60}

3.字典的元素增减

新增
字典元素的新增可以直接通过给出新增键并对其赋值完成,示例如下:

fc={'a':90,'b':80,'c':60}
fc['d']=100
print(fc)
#结果为:{'a': 90, 'b': 80, 'c': 60, 'd': 100}

需要注意的是,如果这里的键字典里已经存在,则执行更改对应值的操作,这是字典的普适逻辑。示例如下:

fc={'a':90,'b':80,'c':60}
fc['b']=100
print(fc)
#结果为:{'a': 90, 'b': 100, 'c': 60, 'd': 100}

可以通过这样的方式来修改字典值。
此外,还可以通过update()函数批量增加字典元素,示例如下:

fc={'a':90,'b':80,'c':60}
fc.update(d=90,f='zero')
print(fc)
#结果为:{'a': 90, 'b': 80, 'c': 60, 'd': 90, 'f': 'zero'}

使用update()函数时,也可以进行批量修改,或者新增和修改同时进行:

fc={'a':90,'b':80,'c':60}
fc.update(a=95,b='85')
print(fc)
fc.update(d=90,f='zero')
print(fc)
fc.update(a=90,e='61')
print(fc)
#结果为:{'a': 95, 'b': '85', 'c': 60}
#       {'a': 95, 'b': '85', 'c': 60, 'd': 90, 'f': 'zero'}
#       {'a': 90, 'b': '85', 'c': 60, 'd': 90, 'f': 'zero', 'e': '61'}

删除

  1. 使用 pop() 函数删除,向pop()传递要删除的键,就可以将制定的元素删除。pop()函数有返回值,返回为被删除的值,示例如下:
fc={'a':90,'b':80,'c':60}
print(fc.pop('a'),fc)
#结果为:90 {'b': 80, 'c': 60}
  1. 可以用del进行删除,但需要注意使用del的格式,示例如下:
fc={'a':90,'b':80,'c':60}
del fc['a']
print(fc)
#结果为:{'b': 80, 'c': 60}
  1. popitem()函数,该函数可以删除字典的最后一个元素,其返回值类型为 tuple,值为被删除的元素,示例如下:
fc={'a':90,'b':80,'c':60}
kv=fc.popitem()
print(kv,type(kv),fc)
#结果为:('c', 60) <class 'tuple'> {'a': 90, 'b': 80}
  1. clear()函数:清空字典。示例如下:
fc={'a':90,'b':80,'c':60}
fc.clear()
print(fc)
#结果为:{}
  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值