extend 追加多个元素,打印none
extend() 函数与 append() 函数无返回值,只是在原来的位置修改原来的列表。list1 = ['安琪拉','妲己','韩信','典韦','吕布']
print(list1)
list2 = ['小乔','貂蝉']
print(list2)
list3 = list1.extend(list2)
print(list3) #为什么打印none 的原因
如果需要打印list3,需要把 list1 单独赋值:
list3 = list1; 因为extend()方法无返回值。 list1: del, remove, pop, list1.count(list) 拆包:将元组、列表等可迭代对象中的值分配给多个变量。
tuple1 = (1, 2, 3)
a, b, c = tuple1
print(a) # 1
print(b) # 2
print(c) # 3
list1 =
a, b, c = list1
print(a) # 1
print(b) # 2
print(c) # 3
部分拆包:
tuple1 = (1, 2, 3)
a, *b = tuple1
print(a) # 1
dict1 = {'a': 1, 'b': 2, 'c': 3}
a, b, c = dict1.values()
print(a) # 1
print(b) # 2
print(c) # 3
# 扩展到函数关键字参数中
dict2 = {'a': 1, 'b': 2, 'c': 3}
func(**dict2) # 1 2 3
print(b) #
函数:
def func(a, b, c):
print(a, b, c)
lst =
func(*lst) # 1 2 3 在部分拆包中,*被用来收集一个序列中的剩余元素,将它们打包成一个列表。* 后面的变量名可以匹配0个或多个元素。
部分拆包只能使用一次,且只能在最后一个位置参数处使用。否则会引发 SyntaxError 异常。
str1 = 'abcde'
a, *rest = str1
print(a) # 'a'
print(rest) # ['b', 'c', 'd', 'e'] lst2.sort():列表方法,会修改原列表;new_lst = sorted(lst1)不影原列表。 位置参数和命名参数。 形式参,缺省参数,*参, **参; 还有 命名参数:def stu_info(name,age,address, school="tuling")
def test_1(a, b=2, *args, **kwargs):
print(f'args={args},a={a},b={b},kwargs={kwargs}')
test_1(1,3,4,5,6, name="zhangsan",age=18) Python的引用机制使得我们可以轻松地处理数据对象,同时也让 Python 具备了一些高级特性,比如反射、动态类型、垃圾回收等。 迭代器是指实现了 iter() 和 next() 方法的对象,它能够遍历一个容器中的所有元素,并且只能向前遍历。
生成器是一种特殊的迭代器,它使用 yield 语句,生成序列中的下一个值。可以视为一个函数,每次调用生成器的 next() 方法时,它会从上次暂停的位置继续执行,直到再次遇到 yield 语句,然后将 yield 后面的表达式作为下一个值返回给调用者。 #闭包:外部函数封闭了内部函数,但是:内部函数引用了外层函数的变量时:比如形参,就形成了一个闭包。
def test(a):
#外部函数将内部函数封闭了 ,但是内部函数可以直接使用外部函数的:形参
def wrapper():
print(a)
return wrapper
t = test(10)
#t变量拿到了当前wrapper函数的地址 ,所以:
t()
dict_1 = {'a': 1, 'b': 2, 'c': 3}
dict_1_list = dict_1.items()
print(dict_1_list)
for key, value in dict_1.items():
print(key, value)
# dict_items([('a', 1), ('b', 2), ('c', 3)])
# a
# 1
# b
# 2
# c
# 3 key=lambda x: x['age']
对于每个元素x,取出其第二个值,也就是字典中的人员信息,然后再取出其中的'age'字段,作为排序关键字。这样就可以根据每个人的年龄大小来对字典进行排序了。people = {
'person1': {
'name': '张三',
'age': 20,
'school': '清华大学'
},
'person2': {
'name': '李四',
'age': 22,
'school': '清华大学'
},
'person3': {
'name': '王五',
'age': 21,
'school': '清华大学'
}
} # 按照年龄排序并输出每个人的信息
for person_id, person_info in sorted(people.items(), key=lambda x: x['age']):
print(person_info['name'], person_info['age'], person_info['school']) sort()方法是Python中的一个列表(list)函数,用于将列表中的元素进行排序,也可以指定排序的规则和方式。下面是一个使用sort()函数对列表进行排序的示例:
my_list =
my_list.sort()
print(my_list) # 输出:
my_list =
my_list.sort(reverse=True)
print(my_list) # 输出:
my_list = ['aa', 'abc', 'c', 'abcd', 'b']
my_list.sort(key=len) # 按照元素的长度进行排序
print(my_list) # 输出:['c', 'b', 'aa', 'abc', 'abcd'] 当一个列表中的元素是字典时,可以使用sort()方法对其进行排序。下面是一个示例代码:
python
my_list = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 32},
{'name': 'Charlie', 'age': 28},
]
my_list.sort(key=lambda x: x['age']) # 按照年龄升序排序,25,28,32————排序依据是每个字典中键为'age'的值,即人的年龄。
print(my_list) lambda表达式中,x表示列表中的每一个元素,也就是每个字典;x['age']表示获取字典x中键为'age'的值,也就是人的年龄。 函数参数的意义: 取决于,你在什么地方调用!
所以,这个代码是错的,因为 列表,需要用数字来索引:
my_list = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 32},
{'name': 'Charlie', 'age': 28},
]
print(my_list['age'])
但是,这个是对的,因为函数 在调用时候,传递的是 列表中 第一个元素 字典。
stus = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 32},
{'name': 'Charlie', 'age': 28},
]
def sort_by_age(stu_list):
return stu_list['age']
for stu in stus:
print(sort_by_age(stu))
创建实例属性方法:3种
1: 通过实例对象创建
class Person:
pass
t1 = Person()
t1.name = 'zhangsan'
2: 实例方法中定义:self.name ,注意:实例方法在实例对象调用后,才能用实例属性。
3: 构造方法(魔术方法)中创建:创建方法和 2同,但是,实例化过程中会自动进行初始化, def __init__def重写了 内部函数
私有属性:不能在类的外部 访问 和 调用。只能在 类的内部,创建一个 实例方法,来访问:
self.__age = age
def get_attr(self):
return self.__age 创建实例属性方法:3种
1: 通过实例对象创建,也叫动态 创建属性。
class Person:
pass
t1 = Person()
t1.name = 'zhangsan'
2: 实例方法中定义:self.name ,注意:实例方法在实例对象调用后,才能用实例属性。
3: 构造方法(魔术方法)中创建:创建方法和 2同,但是,实例化过程中会自动进行初始化, def __init__def重写了 内部函数
页:
[1]
2