列表与字典

列表

1. 定义

数据类型 list 是 Python 内置的一种高级数据类型;

list 是一种有序的集合,基于链表实现,在 Python 中应用很广泛;

2. 列表的创建

2.1 通过方括号创建

names = ['james', 'michael', 'emma', 'emily']
print('names的数据类型: ', type(names))
print(names)

# 输出:
names的数据类型:  <class 'list'>
['james', 'michael', 'emma', 'emily']

2.2 通过全局函数 list() 创建

lst = list([1, 2, 3, 4, 5])
lst1 = list("Python")
print(lst)
print(lst1)

# 输出:
[1, 2, 3, 4, 5]
['P', 'y', 't', 'h', 'o', 'n']

2.3 创建空列表

lst2 = []
lst3 = list()
print(lst2, len(lst2))
print(lst3, len(lst3))

# 输出:
[] 0
[] 0

2.4 列表推导式

示例一:

# 普通方法构建 1 - 10 的平方
lst = []
for i in range(1, 11):
    lst.append(i ** 2)
print(lst)

# 列表推导式
lst1 = [i ** 2 for i in range(1, 11)]
print(lst1)

# 输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

示例二:

# 100 以内能被 7 整除的数字
lst2 = [i for i in range(101) if i % 7 == 0]
print(lst2)

# 输出:
[0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]

示例三:

# 获取长度大于 5 的元素大写后的列表
fruits = ['apple', 'orange', 'pear', 'banana', 'strawberry']
new_fruits = [fruit.upper() for fruit in fruits if len(fruit) > 5]
print(new_fruits)

# 输出:
['ORANGE', 'BANANA', 'STRAWBERRY']

3. 列表的增删改查

3.1 增

方法内置方法(列表)作用示例结果
列表拼接将两个列表拼接在一起,不改变原先的两个列表[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]
append()在列表后面添加一个元素,注意,append 方法返回值为 None[1, 2].append([“A”, “B”])[1, 2, [‘A’, ‘B’]]
insert()在列表指定索引处插入元素,注意,该方法返回值为 None[‘Amy’, ‘Matlab’].insert(0, “C#”)[‘C#’, ‘Amy’, ‘Matlab’]
extend()在列表后面添加另一个列表的元素,即列表合并,返回值为 None[1, 2, 3].extend([4, 5, 6])[1, 2, 3, 4, 5, 6]

3.2 删

方法内置方法(列表)作用示例结果
pop()默认删除列表最后一个,也可以删除指定索引,返回值为删除的元素被删元素 = lst.pop(1)
remove()按照元素内容删,参数为要删除的元素内容,返回值为 Nonelst.remove(“A”)
clear()清空列表元素,将列表变为一个空列表,但是列表仍然存在,返回值为 Nonelst.clear()[]
del什么都可以删,但是一旦删除,就是从内存中抹除del lst

3.3 改

方法内置方法(列表)作用示例结果
通过索引修改将指定索引的元素修改lst[0] = “Mike”
修改某个切片将列表某个切片的元素修改
sort()将列表元素排序,默认从小到大,指定参数 reverse=True 则从大到小排序,返回值为 Nonelst2.sort(reverse=True)
reverse()将列表元素翻转,会对列表造成改变,如果不想影响原列表,可以使用步长 -1 翻转lst.reverse()

补充:

对列表的切片进行修改

name_lst = ["Amy", "Bob", "Mike", "John", "Jacky"]

name_lst[1:4] = "Python", "Java", "Matlab"
print(name_lst)

name_lst[1:4] = ["Matlab", "Java", "Python"]
print(name_lst)

# 输出:
['Amy', 'Python', 'Java', 'Matlab', 'Jacky']
['Amy', 'Matlab', 'Java', 'Python', 'Jacky']

对不可变数据类型字符串的修改

字符串是不可变数据类型;列表是可以变数据类型;

因此可以先把字符串转换为一个列表,然后对列表进行修改,最后再拼接为字符串

str1 = "python"
lst = list(str1)
print(lst)
lst[0] = "P"
print(lst)
str1 = "".join(lst)
print(str1)

# 输出:
['p', 'y', 't', 'h', 'o', 'n']
['P', 'y', 't', 'h', 'o', 'n']
Python

3.4 查

方法内置方法(列表)作用示例结果
type()返回列表类型type([“Mike”, “John”, “Amy”])<class ‘list’>
len()返回列表长度len([“A”, “B”, “C”, [“D”, “E”]])4
lst[0]查看列表中指定索引的元素lst = [“Mike”, “John”, “Amy”]Mike
遍历循环遍历列表元素while 循环、for 循环
切片查看列表的某个切片
in 关键字判断某个元素是否在列表中“1” in [1, 2, 3, 4, 5]False
index()返回对应元素的索引[ ‘Matlab’, ‘Java’, ‘Python’].index(‘Java’)1
count()返回某元素出现的个数[“aaa”, “bbb”, “ccc”, “aaa”, “aaa” ].count(“aaa”)3

补充:

通过索引访问列表元素

names = ['james', 'michael', 'emma', 'emily']
print(names[0])
print(names[-1])
print(names[-2])
print(names[len(names) - 2])

# 输出:
james
emily
emma
emma

for 循环遍历列表

names = ['james', 'michael', 'emma', 'emily']

for name in names:
    print(name, end=" ")
print()

for i in range(len(names)):
    print(names[i], end=" ")
print()

# 输出:
james michael emma emily 
james michael emma emily 

while 循环遍历列表

index = 0

while index < len(names):
    print(names[index])
    index += 1
    
# 输出:
james michael emma emily 

列表的切片

a=['egg', 'fish', 'cake', 'tomato', 'james', 'ava', 'michael', 'emma', 'emily']
print(a[1:3]) 		# 按下标 0 开始,不包括最右边的 3
print(a[1:]) 		# 1 以及之后的全部
print(a[:3]) 		# 3 之前的但不包括 3
print(a[:]) 		# 所有
print(a[::2])		# start 和 end 为空的时候,默认是全选,step 为空时默认是 1,这个表示的是从索引为 0 开始,以步长为 2 来选择元素
print(a[1:3:2])		# 以索引为 1 开始,索引 3 结束,步长为 2 来选择元素
print(a[::-1])		# 当 step 为 -1 时,将列表进行了逆序排序
print(a[::-2])		# 当步长为正数时,是从左到右以该步长来获取列表中的元素,当步长为负数时,是从右边到左以该步长的绝对值来获取的元素
print(a[0, 1, 3])	# 不可以通过离散的索引值来获取

字典

1. 定义

  • Python 字典是另一种可变容器模型,可存储任意类型对象,如字符串、数字、元组等其他容器模型;
  • 因为字典是无序的,所以不支持索引和切片;
  • 元素以键值对存在 key(键值) : value(实值)
  • 唯一的,且必须是不可变数据类型

2. 字典的创建

2.1 通过花括号创建

dict1 = {"name": "Jarvis", "age": 21, "gender": "Male"}
print(type(dict1))
print(dict1)

# 输出:
<class 'dict'>
{'name': 'Jarvis', 'age': 21, 'gender': 'Male'}

2.2 创建空字典

dict2 = {}
print(dict2)

# 输出:
{}

2.3 使用 dict 类的方法创建字典

# 使用 dict 类的方法创建字典
course = ["chinese", "math", "science", "english"]
dict2 = dict.fromkeys(course, 60)
print(dict2)

# 输出:
{'chinese': 60, 'math': 60, 'science': 60, 'english': 60}

3. 字典的增删改查

3.1 增

方法内置方法(字典)作用示例结果
新键赋值给字典的一个新键赋值,这个新的键原先没有dict1[“ID”] = “2021216432”字典中多出新的键值对
update()给字典添加新的键值对,传入的参数也是一个字典,返回值为 Nonedict1.update({“height”: 172, “weight”: 110})字典中多出新的键值对

3.2 删

方法内置方法(字典)作用示例结果
del删除字典中的键值对del dict1[“gender”]字典中对应的键值对被删除
pop()根据参数传入的键,删除对应的键值对,返回值为键对应的值a = dict1.pop(“gender”)

3.3 改

方法内置方法(字典)作用示例结果
根据键修改根据键,修改对应的值dict1[“name”] = “Python”
update()对字典中指定键的值进行修改,传入的参数也是一个字典,返回值为 Nonedict1.update({“weight”: 109})

3.4 查

方法内置方法(字典)作用示例结果
根据键查找根据键,查找对应的值,返回对应的值dict1[“name”]Jarvis
len()返回字典的长度(键值对的个数)len(dict1)
in 关键字判断键是否在字典中,返回真或假“age” in dict1True
遍历键依次取出字典中的每一个键 Key,如果你想取到值,只需要 dict1[Key]for Key in dict
get()根据输入的键,查找并返回对应的值;如果键不存在,则返回 Nonen = dict1.get(“name”)Jarvis
get() 两个参数第一个参数为键,根据输入的键在字典中查找并返回对应的值;如果键不存在,返回第二个参数name = dict1.get(“nameTMD”, 5128340)5128340
keys()返回一个迭代器,里面的元素是字典中的每个键,有点像列表,类型为 dict_keysKeys = dict1.keys()dict_keys([‘name’, ‘age’, ‘gender’])
values()返回一个迭代器,里面的元素是字典中的每个键对应的值,类型为 dict_valuesvalues = dict1.values()dict_values([‘Jarvis’, 21, ‘Male’]
items()返回一个迭代器,里面的元素是字典中的每个键值对组成的小元组,类型为 dict_itemsitems = dict1.items()dict_items([(‘name’, ‘Jarvis’), (‘age’, 21)]
list()可以用来将 dict_keys 类型或者 dict_values 类型或者dict_items 类型的迭代器对象转换为一个真正的列表Keys = list(dict1.keys())[‘name’, ‘age’, ‘gender’]
遍历 dict1.items()以小元组的形式,依次取出字典中的每个键值对for item in dict1.items(): print(item)(‘name’, ‘Jarvis’)
两个参数遍历dict1.items()序列的解包,第一个参数对应元组中的键,第二个参数对应元组中的值for key, value in dict1.items():key 即每一个键 value 即对应的值

变量的赋值方式(补充)

方法一:直接赋值

a = 10
b = True
c = 2 + 3
print(a, b, c)

# 输出:
10 True 5

方法二:多个变量同时赋值

a, b, c, d = 1, False, 3.141592, True
print(a, b, c, d)

# 输出:
1 False 3.141592 True

方法三:使用变量接收序列对象的值

# 要保证两边个数相同
a, b, c, d = [1, 3.1412, True, False]   # 列表
print(a, b, c, d)
a, b, c, d = ("aaa", "bbb", "ccc", "ddd")   # 元组
print(a, b, c, d)

# 输出:
1 3.1412 True False
aaa bbb ccc ddd
  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Python中,列表字典是两种常用的数据结构。列表是有序的可变序列,可以存储多个元素,每个元素可以是不同的数据类型。可以使用len()函数来获取列表的长度,该函数返回列表中元素的个数。例如,对于一个列表fc={'lily':5,'lucy':9},可以使用len(fc)来获取列表fc的长度,结果为2。\[1\] 字典是一种无序的可变容器,由键值对组成。每个键值对都是一个键和一个对应的值。可以使用len()函数来获取字典的长度,该函数返回字典中键值对的个数。另外,可以使用values()方法来获取字典的所有值,它返回一个包含字典所有值的列表的视图对象。例如,对于一个字典dict_data = {1: 1, 2: 2, 3: 4},可以使用dict_data.values()来获取字典dict_data的所有值,结果为dict_values(\[1, 2, 4\])。\[2\] 在Python中,可以使用update()方法将一个字典中的键值对添加到另一个字典中。该方法接受一个字典作为参数,将该字典中的键值对添加到当前字典中。如果两个字典中存在相同的键,则更新当前字典中的值。例如,对于两个字典dict_data1 = {1: 1, 2: 2}和dict_data2 = {1: 4, 4: 5},可以使用dict_data1.update(dict_data2)将字典dict_data2中的键值对添加到字典dict_data1中,结果为{1: 4, 2: 2, 4: 5}。\[3\] 总结来说,列表是有序的可变序列,可以使用len()函数获取列表的长度。字典是无序的键值对容器,可以使用len()函数获取字典的长度,使用values()方法获取字典的所有值,使用update()方法将一个字典中的键值对添加到另一个字典中。 #### 引用[.reference_title] - *1* [python列表字典](https://blog.csdn.net/eric3012/article/details/119960458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python列表字典使用(详细)](https://blog.csdn.net/Fran_klin__/article/details/125145194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值