字符串和列表以及字典三种类型的相似与不同

# 1.首先字符串和列表都可以直接索引取值
# 而字典却需要通过key取值。
# 1.1字符串
# 1.索引取值(正向取+反向取):只能取
name = 'hello world'
print(name[0]) # 得到的是第一个元素h
print(name[-1]) # 得到的是最后一个元素!
print(name[8]) # 得到的是元素r
# 正数从左往右取值,负数从右往左取值
# 需要注意的是空格也算
# 1.2列表
# 1.索引取值
name_list = ['jason', 'egon', 'tong']
print(name_list[0])
print(name_list[-1])
# 按索引取列表里的元素不存在时可以修改
name_list = ['jason', 'egon', 'tong']
name_list[0] = 'uuu'
print(name_list)
# 1.3字典
# 按key存取值:可存可取
d1 = {'username': 'jason', 'password': 123, 'hobby': ['read', 'run']}
print(d1['username']) # jason 取
d1['username'] = 'tony'
print(d1) # 存个'tony
# 得到{'username': 'tony', 'password': 123, 'hobby': ['read', 'run']}

print(d1['age']) # 用中括号取值的时候,如果键不存在直接报错
d1['age'] = 18 # 键如果存在就修改,不存在就新建
print(d1)
# 总结:
# 通过字符串,列表,字典三种类型的索引取值比较
# 我们可以看成他们都支持索引取值,只不过字典是按照key来取value的值的。
# 还有就是字符串不支持索引取值不存在时能修改元素,而列表和字典都可以。
# 其中字典是键不存在创建一组新的键对来实现,键存在则修改。
# 2.他们三种数据类型都可以通过len统计元素。
# 2.1字符串长度len的使用
name = 'hello world'
print(len(name)) # 得到的是11,特别注意空格也算字符。
# 2.2列表长度len的使用
name_list = ['jason', 'egon', 'tong']
print(len(name_list)) # 3
# 2.3字典长度len的使用
d = dict({'name': 'egon', 'age': 18})
print(len(d)) # 2 键值对的个数
# 总结:
# 可以看出长度len都可以统计他们三种数据类型
# 里面的元素或者是键值对的个数,需要注意的是
# 在统计字符串元素的时候空格也算.
# 3.成员运算in和not inde 使用区别
# 3.1字符串
name = 'hello world!'
print('hello' in name) # 得到的是True.说明hello在name里面
print('jason' not in name) # 得到的也是True.说明jason不在name里面
# 3.2列表
name_list = ['jason', 'egon', 'tong']
print('jason' in name_list) # 得到的是True
print('jason' not in name_list) # 得到的是False
# 3.3字典
d1 = {'username': 'jason',
'passwore': 123,
'hobby': ['read', 'run']}
print('jason' in d1) # False 字典默认只暴露key值,如果想取value
print('username' in d1) # True 由此可以总结一句话:key在字典里,value可以取。
# 只能通过key值
# 总结:
# in和not in都可以用来判断这三种数据类型.
# 某个元素在不在本数据类型里面,唯一的区别是
# 字典只能判断key在不在字典里面而不能判断value
# 要想知道value只能同过key来取.
# 4切片
# 4.1字符串
name = 'hello world!'
print(name[1:4]) # 得到的是ell三个元素,又是顾头不顾尾,1:4也就是找1到3个元素就可以
print(name[-1:-5]) # 切片的方向是从左往右所以这个什么都切不到的。要想解决这种需要再后面在加一个:-1
print(name[-1:-5:-1]) # 得到的元素是!dlr.
print(name[1:4:2]) # 得到的是el两个元素,第三个参数2表示步长,相当于等差数列,a1=1 公差为2。an为小于4的整数
print(name[1:4]) # 得到的是ell三个元素,又是顾头不顾尾,1:4也就是找1到3个元素就可以
# 4.2列表
name_list = ['jason', 'egon', 'tong']
print(name_list[0:2]) # ['jason', 'egon']
print(name_list[0:2:2]) # ['jason']
print(name_list[-1:-3:-1]) # ['tong', 'egon']
# 总结:
# 切片目前只有字符串和列表可以切片
# 字典不可以,因为字典不能按照索引取值
# 截取的是某一段内容,顾头不顾尾
# 默认的切片方向都是从左往右,-1修改从右往左
# 第三个参数表示步长,表示间隔多少取一个
# 需要强调的是在字符串切片时空格也算字符
# 5增删改查(字符串,列表,字典)

# 5.1.1字符串

# .strip()和.lstrip()以及.rstrip()
# 以及切分.split()和.rsplit()
# 相当于增删改查里面的删除
# 移除空白.strip()(重要等级6颗星,懂我意思吧)
username = input('username>>>:')
if username == 'jason':
print('登录成功')
else:
print('登录失败')
# 如果你输入空格加jason,得到的是登录失败。这个时候就需要移除空白来帮忙了
# 在用户输入数据的代码下面加它 # username = username.strip()。这个时候输入jason加空格也可以登录成功了
# 他的作用就是为了用户不小心多点了一个空格达到重新输入的麻烦
username1 = '$$jason$$'
# 如果我想把上面的$$去掉只留下jason,就用到下面的方法
print(username1.strip('$')) # 移除首尾的所有字符
username1 = '$$jas$$on$$' # 如果中间有字符移除不了中间的字符

username2 = ' jason '
# 如果我想把上面的空格去掉只留下jason,只要用下面的一段代码就可以。
print(username2.strip()) # 默认移除首尾的所有空格,中间的也不可以移除。
# 如下
username = input('username>>>:') # 1
username = username.strip() # 2
# 1和2可以合成一段代码,如:
username = input('username>>>:').strip()
if username == 'jason':
print('登录成功')
else:
print('登录失败')

n1 = '$$jason$$'
# 移除首指定的字符
print(n1.lstrip('$')) # 得到的是jason$$ left 左
# 移除尾部指定的字符
print(n1.rstrip('$')) # 得到的是$$json right 右
5.1.2切分split(难度六颗星)
# 按照指定的字符切割字符串
res = 'jason|123|read'
print(res.split('|')) # 切割之后得到的是['jason','123','read']
# 1.指定切割的字符不保留
# 2.切割之后的结构是一个列表
# 从左往右切割
print(res.split('|',maxsplit=1)) # 当maxsplit=1时得到的是['jason', '123|read']
# 当maxsplit=2时,得到的是['jason', '123', 'read']
# 从右往左切割
print(res.rsplit('|',maxsplit=2)) # 当maxsplit=1时得到的是['jason|123', 'read']
# 当maxsplit=2时,得到的是['jason', '123', 'read']
# 5.2列表

# 5.2.1.1(增)
# 末尾追加元素.append()
name_list = ['jason', 'egon', 'tong']
name_list.append('kevin')
print(name_list)
# 得到的是['jason', 'egon', 'tong', 'kevin']
name_list.append([11, 22, 33, 44])
print(name_list)
# 得到的是['jason', 'egon', 'tong', [11, 22, 33, 44]]
# 5.2.1.2(增)
# 插入元素.insert()
name_list.insert(0, 'jack')
print(name_list)
# 得到的是['jack', 'jason', 'egon', 'tong']
name_list.insert(1, 'jack')
print(name_list)
# # 得到的是['jason', 'jack', 'egon', 'tong']
# 5.2.1.3(增)
# 扩展列表.extend() 等价for循环+.append()
name_list = ['jason', 'egon', 'tong']
l1 = [11, 22, 33, 44]
for i in l1:
name_list.append(i)
else:
print(name_list)
# 得到的是['jason', 'egon', 'tong', 11, 22, 33, 44]
# 或者用下面这种方法
name_list = ['jason', 'egon', 'tong']
name_list.extend(l1)
print(name_list)
# 5.2.2.1(删):
# 通用的删除操作del res(索引)
name_list = ['jason', 'egon', 'tony']
del name_list[1]
print(name_list) # 得到的是['jason', 'tong']
# 5.2.2.2
指名道姓的移除某个元素.remove()
res1 = name_list.remove('tony')
print(name_list) # 得到的是['jason', 'egon']
print(res1) # None 相当于消除了这个元素不是弹出
# 5.2.2.3
# 弹出 默认尾部弹出元素.pop()
res = name_list.pop() # 尾部弹出
print(name_list) # 得到的是['jason', 'egon']
print(res) # 得到的是tony
# 弹出指定索引位置的元素.pop(索引)
res = name_list.pop(1)
print(name_list) # 得到的是['jason', 'tony']
print(res) # egon
# 5.2.2.4
# 清空列表.clear()
name_list = ['jason', 'egon', 'tony']
name_list.clear()
print(name_list) # 得到的是[]
# 5.2.3(改):支持索引的方式去修改
name_list = ['jason', 'egon', 'tong']
name_list[1] = 'egon快回来!'
print(name_list)
# 得到['jason', 'egon快回来!', 'tong']
# 5.2.4(查)
# 统计列表中某个元素出现的次数
l1 = [11, 22, 33, 3, 4, 3, 53, 5, 366, 3]
print(l1.count(1)) # 3 统计列表中某个元素出现的次数
# 要注意的是统计的是某个元素而不是某个数
# 5.3字典

# 5.3.1删
# 字典的删除操作
del d1['password']
print(d1) # 删除的是键值对,key和value要删除一起删除不会留其中一个
d1.pop() # 列表中这个直接尾部弹出,但是字典里面这个会直接报错,
# 所以字典需要在括号里面填东西.
d1.pop(0)
print(d1) # 报错 字典也不可以用索引
res = d1.pop('password')
print(d1) # {'username': 'jason', 'hobby': ['read', 'run']}
print(res) # 123 说明弹出的是value,
# 删除的是key 看你用不用,不用就帮你删了
posted @ 2021-06-05 21:20  点滴180  阅读(597)  评论(0)    收藏  举报