5、python入门-list、tuple、dict、set类型

一、list 列表

1)列表创建

1)list是一种有序的集合,可以随时添加和删除其中的元素。
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
2)由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:
L = [‘Michael’, 100, True]
3)定义空list:
empty_list = []
4) list可以直接打印
L = [‘Adam’, 95.5, ‘Lisa’, 85, ‘Bart’, 59]
print L
输出:[‘Adam’, 95.5, ‘Lisa’, 85, ‘Bart’, 59]

2)列表访问

方法是通过索引来获取list中的指定元素。
1)索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。索引访问越界会报错
2)可以倒序访问 -1 是最后一个 -2 为倒数第二个 同样 索引访问越界会报错

3)添加新元素

L.append(‘Paul’) 默认添加到最后 list.append()方法仅适用于向后面添加单个元素,参数可以是任何东西,将作为元素添加到列表尾部
L.insert(0, ‘Paul’) 将被添加到索引为 0 的位置(也就是第一个),而原来索引为 0 的元素,以及后面的所有元素,都自动向后移动一位。索引为负数的时候原理也是这样,不过添加完并不是想要的位置
例子:
L=[1,2,3]
L.insert(-1,0)
print L
打印 [1, 2, 0, 3]
L=[1,2,3]
extend()方法事实上使用一个列表来扩展另一个列表
L.extend([4,5]) 结果为 [1,2,3,4,5]
L=[1,2,3]
L.append([4,5]) 结果为 [1,2,3,[4,5]]
参考 https://blog.csdn.net/qq_14860599/article/details/80114175

4)删除元素

L.pop() 删除最后一个 ,并且它还返回这个元素
L.pop(2) 删除索引为2的 ,并且它还返回这删除的元素
如果pop不存在的元素会报错

方法代码说明
deldel L[i]①根据索引删除;②删除索引范围内的元素;③删除整个列表。del操作没有返回值
popL.pop(i)根据索引删除,返回索引位置的元素,不指定i pop删除最后一个元素
removelist.remove(value)删除第一个符合条件的元素,注意不是根据索引删除,有返回值

参考 https://blog.csdn.net/weixin_42814873/article/details/83377431

5)替换元素

L[2]=‘Adam’
对于不存在的索引,赋值会报错

list和字符串的转化

参考:https://blog.csdn.net/weixin_40449071/article/details/82892881

str >>>list

    str1 = "12345"  
    list1 = list(str1)  
    print list1  
      
    str2 = "123 sjhid dhi"  
    list2 = str2.split() #or list2 = str2.split(" ")  
    print list2  
      
    str3 = "www.google.com"  
    list3 = str3.split(".")  
    print list3  
输出为:
['1', '2', '3', '4', '5']  
['123', 'sjhid', 'dhi']  
['www', 'google', 'com']

list >>>str

方式一、

    str4 = "".join(list3)  
    print str4  
    str5 = ".".join(list3)  
    print str5  
    str6 = " ".join(list3)  
    print str6  
输出为: 
wwwgooglecom  
www.google.com  
www google com

方式二:

>>> juice=['orange','a','b']  
>>> content='%s'*len(juice) % tuple(juice)  
>>> print content  
orangeab  

二、tuple 元组

1)创建tuple

1)tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。
2) t = (‘Adam’, ‘Lisa’, ‘Bart’) – 创建
3)因为不能修改,所以没有添加、删除、替换。只有创建和访问

2)访问tuple

同list 索引下标访问 : t = (‘Adam’, ‘Lisa’, ‘Bart’) print t[0]

3)创建单元素tuple

t = (1,) 因为括号可以表示运算时的优先级,避免误解

4)tuple的不可变

tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
t = (‘a’, ‘b’, [‘A’, ‘B’]) l = t[2] ,l[0]=‘X’

三、dict 字典

1)什么是dict

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。
花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

2)集合大小-len函数

由于dict也是集合,len() 函数可以计算任意集合的大小:

3)dict元素访问

d[key] 的形式来查找对应的 value。通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:

  1. 一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d:
    print d['Paul']
  1. 二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>>print d.get('Bart')
59
>>>print d.get('Paul')
None

4)dict的特点

1) dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
2) dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:
3) dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

5) dict更新或者添加元素

d[‘Paul’] = 72

6) dict字典的删除

方法代码说明
cleardict.clear()删除字典内所有元素
popdict.pop(‘name’)删除字典给定键 key 所对应的值,返回值为被删除的值
popitemdict.popitem()随机返回并删除字典中的一对键和值 tuple类型
deldel dict[‘name’]或者 del dict能删单一的元素也能清空字典,清空只需一项操作

参考 https://blog.csdn.net/uuihoo/article/details/79496440

6) 遍历dict

直接使用for循环可以遍历 dict 的 key:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
for name in d:
    print name,":",d[name]

四 set集合

1)什么是set

我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。
set 持有一系列元素,这一点和 list 很像,但是1)set的元素没有重复,2)而且是无序的 3)set存储的元素和dict的key类似,必须是不变对象,因此任何可变对象是不能放入set中的。 ,这点和 dict 的 key很像。

2) set集合创建

创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

>>> s = set(['A', 'B', 'C'])

set会自动去掉重复的元素

>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3

3) set访问

由于set存储的是无序集合,所以我们没法通过索引来访问。
访问 set中的某个元素实际上就是判断一个元素是否在set中。
‘Bart’ in s

4) set遍历

由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现。

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
   print x[0],":",x[1]

4)set更新-添加和删除

添加 :用set的add()方法:,如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:

>>> s = set([1, 2, 3])
>>> s.add(4)

删除:用set的remove()方法,如果删除的元素不存在set中,remove()会报错:,所以之前要判断

>>> s = set([1, 2, 3, 4])
>>> s.remove(4)

五、list和tuple、字符串 的切片

L[n: m:q]

从索引n开始,不包括m,q表示步长,隔q个取一个

L = range(1, 101)
#1. 前10个数;
#2. 3的倍数;
#3. 不大于50的5的倍数。
print L[:10]
print L[2::3]
print L[4:50:5]
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

倒序切片

利用倒序切片对 1 - 100 的数列取出:

  • 最后10个数;
  • 最后10个5的倍数。
L = range(1, 101)
print L[-10:]
print L[4::5][-10::-1]
print L[4::5][-10::1]
输出:
[91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
[55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5]
[55, 60, 65, 70, 75, 80, 85, 90, 95, 100]

字符串切片

字符串 'xxx’和 Unicode字符串 u’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

def firstCharUpper(s,n=1):
    return s[0:n].upper()+s[n:]
print firstCharUpper('hello')

zip函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

备注:zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值