Python-用list tuple if dict set

list

list是一种有序的***,可以随时添加和删除其中的元素。跟java不一样的是 可以使用arr[-1] 0>-x >=- len(arr) 索引的数字为 0~ len(arr)-1 -len(arr)~ -1 超过会报错

classmates= ['A','B','C','D','E']
print(classmates)
print(len(classmates))
for i in classmates:
    print(i)
'''
['A', 'B', 'C', 'D', 'E']
5
A
B
C
D
E
'''
for i in range(0,len(classmates)):
    print(classmates[i])
'''
A
B
C
D
E
'''
classmates= ['A','B','C','D','E']
print(classmates[-1])
print(classmates[-2])
print(classmates[-3])
print(classmates[-4])
print(classmates[-5])
'''
print(classmates[-6])
IndexError: list index out of range
'''
'''
E
D
C
B
A
'''
  • list是一个可变的有序表,所以,可以往list中追加元素到末尾: append()方法
  • 在某个位置上插入
    insert(x,'???')
  • 要删除list末尾的元素
    pop(i) 没有参数默认为最后一个
classmates= ['A','B','C','D','E']
classmates.append('F')
classmates.insert(1,'G')
classmates.insert(-1,'H')
classmates.insert(1,'I')
print(classmates)
for i in range(0,len(classmates)):
    classmates.pop(0)
    print(classmates)
'''
['A', 'I', 'G', 'B', 'C', 'D', 'E', 'H', 'F']
['I', 'G', 'B', 'C', 'D', 'E', 'H', 'F']
['G', 'B', 'C', 'D', 'E', 'H', 'F']
['B', 'C', 'D', 'E', 'H', 'F']
['C', 'D', 'E', 'H', 'F']
['D', 'E', 'H', 'F']
['E', 'H', 'F']
['H', 'F']
['F']
[]
'''
  • 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:更改值任意属性
classmates= ['A','B','C','D','E']
classmates[0] ='F'
print(classmates)
'''
['F', 'B', 'C', 'D', 'E']
'''
  • list元素也可以是另一个list,list里面的元素的数据类型也可以不同
p = [1,2,3]
classmates= ['A',p,True ]
print(classmates)

tuple

tuple和list非常类似,但是tuple一旦初始化就不能修改,更具有安全性 相比list 没有append() pop() insert()等方法
classmates = ('Michael', 'Bob', 'Tracy') 跟list 区别是括号 [] / ()
注意:因为定义tuple 类型跟 四则运算的() 相互混了

false_t = (1)           # 定义的不是tuple,是1这个数!
print(false_t)        
true_t = (1,)            # 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
print(true_t)
true_t1 = ()
print(true_t1)
'''
1
(1,)
()
'''

虽然说tuple不可变 如下

p = ['男',20]
change_t = (1,'czncai',p)
print(change_t)
p[0] = '***'
p[1] = 21
print(change_t)
'''
(1, 'czncai', ['男', 20])
(1, 'czncai', ['***', 21])
'''

条件判断 + input()

input('请输入一个数字')
if boolean表达式 :
elif :
else :

循环

  • for x in list :
    是把list每个元素代入变量x,然后执行缩进块的语句
  • for x in range() range()函数,可以生成一个整数序列
    list(range(5))
    [0, 1, 2, 3, 4]
  • while boolean表达式 :
    n = n+1
    b = true

break continue

  • break 可以提前退出循环
  • continue 跳过当前的这次循环,直接开始下一次循环。

使用dict和set

  • dict 字典 查找速度大于list
    先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
    dict:给定一个名字,比如'Michael',dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
mathsorce = {'A': 85, 'V': 70 ,'S': 100}
print(mathsorce['A'])
# 要先定义初始化 不能直接 d['cznczai'] = ?
d ={}
d['cznczai'] = 83
d['cgc'] = 90
print(d)
{'cznczai': 83, 'cgc': 90}
# 通过in判断key是否存在:
print('cznczai' in d)
print('codeccc' in d)
True 
False
#或者
d.get('cznczai' , -1)      #如果不存在返回-1  默认为None
#通过pop(key)删除对应的值
d.pop('cznczai')

set

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。(set和dict类似,也是一组key的***,但不存储value。由于key不能重复,所以,在set中,没有重复的key。)

#输出显示的顺序也不表示set是有序的。
d = set([1,2,3])
print(d)
#{1 ,2 ,3}
#重复元素在set中自动被过滤:
d = set([1,2,2,3,4,4,5,5])
print(d)
#{1, 2, 3, 4, 5}
#通过add(key)方法可以添加元素到set中
d.add(6)
print(d)
#{1, 2, 3, 4, 5, 6}
#通过remove(key)方法可以删除元素:
d.remove(1)
print(d)
#{2, 3, 4, 5, 6}
#set可以看成数学意义上的无序和无重复元素的***,因此,两个set可以做数学意义上的交集、并集等操作:& |

再议不可变对象

对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,

ls = [4 ,5,6,1,2,7,3]
ls.sort()
print(ls)
# [1, 2, 3, 4, 5, 6, 7]

对于不可变对象,比如str,

a = 'abc'
a.replace('a','A')
print(a)
# abc

小结

使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。

全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务