一起学Python_Day02_List、字典、字符串、元组、集合基础

 

一、List遍历与排序

1、遍历

user_id = [1, 4, 7, 2, 4, 9, 7, 5,9,18 ]
for i in range(10):
     print(i)
for ii in range(len(user_id)):
     print(user_id[ii])
for v in user_id:
    print(v)

2、排序:reverse()、sort()用法

user_id_list = [9, 7, 5, 9, 18]
user_id_list.reverse() # 倒序排列
print(user_id_list)
# 升序
user_id_list.sort()
print("升序:")
print(user_id_list)
print("倒序:")
user_id_list.sort(reverse=True)
print(user_id_list)

3、切片

基本格式:list[i:i+N:M]  

含义:从第i位索引起,向右取到N位元素为止,按M间隔过滤,M可以不提供,默认值是:1

4、删除列表

  • ⽤del list[m] 语句,删除指定索引m处的元素。
  • ⽤remove()⽅法,删除指定值的元素(第⼀个匹配项)。
  • ⽤pop()⽅法,取出并删除列表末尾的单个元素。
  • ⽤pop(m)⽅法,取出并删除索引值为m的元素。
  • ⽤clear()⽅法,清空列表的元素。(杯⼦还在,⽔倒空了)
  • ⽤del list 语句,销毁整个列表。(杯⼦和⽔都没有了)

二、dict字典与json异同

从形式上看,都是“Key:Value”的形式。

但是从本质上讲,字典是一种数据结构,而json是一种格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。

Python中提供了json.load()转换函数,方便json数据的调用。

-----字典的常用方法

1、增

new_user = {}
# 增
new_user['name'] = 'xiaozhang'
new_user['age'] = 18
new_user['inst'] = ['计算机', '英语', '跑步']
new_user['score'] = 95.5
print(new_user)

思考:什么情况下会用纯数字作为Key?

# 什么场景下会用纯数字做key
# 每个key为userid,value:user信息
user_info = {}
# user_info[1001] = {"name": "xiaozhang", "age": 18}
user1001 = {"name": "xiaozhang", "age": 18}
user_info[1001] = user1001
user_info[1002] = {"name": "xiaobai", "age": 19}
user_info[1003] = {"name": "xiaohei", "age": 28}
user_info[1004] = {"name": "xiaohong", "age": 12}
print(user_info)

--小练习

# 用for循环 把 用户名:密码作为key和value 写入到一个字典
user_list = ['00088880001', '00088880002', '00088880003']
pwd_list = [123456, 654321, 132465]
user_pwd = {}

for i in user_list:
    j = user_list.index(i)
    user_pwd[i] = pwd_list[j]
print(user_pwd)

2、删

# 通过del删除
print(user)
# del user['name']
# print(user)
print(user.pop('name'))
print(user)

3、改

# 改 就是在做重写操作
user['init'] = [1, 2, 3, 4, 5, 6]
print(user)
user['init'] = [2, 3, 4, 5, 6, 7]
print(user)

4、查

# 查
print("==============查询=============")
print(user['address'])
print(user['age'])
# print(user['name'])

5、遍历

print("user.items", user.items())
print("user.keys", user.keys())
print("user.values", user.values())
print("=========开始通过keys遍历=======")
for i in user.keys():
    print(i, "的值是:")
    print(user[i])

print("=========开始通过items遍历=======")
for x in user.items():
    print(x)
    print(x[0], x[1])
print("===========两个变量循环=======")
for k, v in user.items():
    print(k, v)
print("========判断key是否存在========")
# 第一种 user['00088880004'] 如果不存在会报异常
# 异常捕获处理
# 第二种 user.get('00088880004') ,如果不存在会返回None
print(user.get('00088880004'))
print(user.get('age'))

三、字符串常用方法

1、输出要查找内容的次数

print(t.count("a"))

2、查找要找的内容片断,从左向右去找,找到第一个就返回被找到内容的下标

print(t.find("b"))
print(t.find("hab"))

3、index()和find形式一样,从左向右找

 print(t.index("ha"))
 print(t.index("b"))

4、format和format_map

un = "姓名:{name},年龄:{age}"
print(un.format(name="xiaowang", age=20))
把字典中的每个key和字符串中声明的站位去进行查找,format_map相比较format更灵活
print(un.format_map({"name": "xiaowang", "age": 20}))

5、其他方法

# strip 去除前后空格,但是不会去字符串中间的
 print("  abc".strip())
# 是否是空格
isspace()
# 是否包含数字
isalpha()
# 大小写转化
print(t.upper())
print(f.lower())

6、重点方法

1)split()切分

f = "xiaowang,xiaoli,xiaobai,xiaohong"
print(f.replace(",", "\n"))
# for k in f:
#     print("k:",k)
new_f = f.split(",")  # 切分String

2)reverse()反转

new_f.reverse()   

3)是否以输入的内容开始/结束

# 是否以我输入的内容开始/结束
print(t.startswith("h"))
print(t.endswith("h"))
print(t.endswith("b"))

4)去除左空格、右空格

# left strip    right strip
t.lstrip()
t.rstrip()

四、集合与元组(Tuple)

1、异同点

  • 不同点:元组数据不能修改、声明方式不一样
  • 共同点:取值与常用方法类似,只要不是不是修改元组数据的操作都可以执行

2、声明元组:t=(0,1,2,3)

3、set()方法

# 集合 set
# 集合内部数据,不可重复,可以用来做去重

l1 = [100, 1, 3, 5, 6, 5, 2, 8, 5, 1, 3, 20]
s1 = set(l1)
l2 = list(s1)
print(s1)
print(l2)

4、集合常用方法:

1)add和inert

print("=======给set和list添加值")

s1.add(3)
s1.add(5)
s1.add(8)
s1.add(9)

l2.insert(len(l2), 3)
l2.insert(len(l2), 5)
l2.insert(len(l2), 8)
l2.insert(len(l2), 9)
print(s1)
print(l2)

2)合并集合

​
d1 = {1, 2, 3, 4}
d2 = {2, 3, 4, 5}
d1.update(d2)
print(d1)

​

3)交集

# 交集
d3 = {1, 2, 3, 4}
d4 = {2, 3, 4, 5}
d5 = d3.intersection(d4)
print("d5", d5)

4)并集与差集

# 并集
d6 = d3.union(d4)
print(d6)

# 差集
d7 = d3 ^ d4
print(d7)

---扩展整合:列表、集合、元组、字典相互转换

 
# 列表转集合(去重)
list1 = [6, 7, 7, 8, 8, 9]
set(list1)
# {6, 7, 8, 9}
 
#两个列表转字典
list1 = ['key1','key2','key3']
list2 = ['1','2','3']
dict(zip(list1,list2))
# {'key1': '1', 'key2': '2', 'key3': '3'}
 
#嵌套列表转字典
list3 = [['key1','value1'],['key2','value2'],['key3','value3']]
dict(list3)
# {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
 
# 列表、元组转字符串
list2 = ['a', 'a', 'b']
''.join(list2)
# 'aab'
 
tup1 = ('a', 'a', 'b')
''.join(tup1)
# 'aab'

五、非空即真

1、空字符串和长度为0的字符串

print(bool(None))
# False
print(bool(""))
# False
print(bool("1"))
# True

2、List空与List有参数


# list 空和有参数
print(bool([]))
# False
print(bool([1]))
# True

3、dict为空和有参数

# dict 空和有参数
print(bool({}))
# False
print(bool({"name": "zhangsan"}))
# True

---练习:判断用户是否输入用户名

user = input("请输入用户名:").strip()
print(user)
if user:
    print("用户输入的内容是", user)
else:
    print("未输入")

六、文件读写

---文件读取:打开文件->读取内容->关闭文件

1、打开文件方法

---思考:with...open与open区别?

file = open("n.txt", encoding='utf-8')
fp=open('./allData.json','w',encoding='utf-8')
# 创建文件夹
    if not os.path.exists('./qiutuLibs'):
        os.mkdir('./qiutuLibs')
# with...open
imgPath = './qiutuLibs/' + src_name
          with open(imgPath, 'wb') as fp:
             fp.write(image_data)

2、文件读取方法:

1)file.read([size])

  从文件读取指定的字节数,如果未给定或为负则读取所有

2)file.readlines[sizeint]

   读取整行,包括\n字符

3)file.readlines([sizeint])

  读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,减轻读写压力

# 全部读取出来了
# open打开的文件,是一个流,
print("readline:::", file.readline())
print("readlines:::", file.readlines()) # 将数据转为一个list

# 第一种遍历文件的方式,全部读取并且转为list
for line in file.readlines():
     print("line::", line.strip())

# 第二种遍历文件的方式,逐行读取进行操作,不会提前加载到内存中,可以解决性能问题
 for line in file:
     print("line::", line.strip())

3、关闭文件

file.close

4、文件操作模式

 操作模式:r(read)、w(write)、a(append)

  •  r:仅读取
  •  w:仅写入
  •  a:追加模式
file1 = open("a.txt", "w", encoding="utf-8")
data = "天琴座\n"
# 写入数据
file1.write(data)
file1.write(data)
l1 = ["xiaohei", "xiaobai", "xiaohong", "xiaoming"]
# file1.writelines(l1)
for l in l1:
    file1.write(l)
    file1.write("\n")
file1.close()

# 追加模式
file2 = open("a.txt", "a", encoding="utf-8")

file2.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值