网站建设与组织管理,红谷滩园林建设集团有限公司 网站,网络工程师培训班哪里,天门市城市建设管理局网站1.下列转义字符中#xff0c; 属于“回车”含义的是 \n 换行 \r 回车 2.for循环遍历字典
在Python中#xff0c;你可以使用for循环来遍历字典的键#xff08;keys#xff09;、值#xff08;values#xff09;或者键-值对#xff08;items#xff09;。下面是三种遍历…1.下列转义字符中 属于“回车”含义的是 \n 换行 \r 回车 2.for循环遍历字典
在Python中你可以使用for循环来遍历字典的键keys、值values或者键-值对items。下面是三种遍历字典的方法
遍历字典的键keys
my_dict {a: 1, b: 2, c: 3}
for key in my_dict: print(key)
遍历字典的值values
my_dict {a: 1, b: 2, c: 3} for value in my_dict.values(): print(value)
遍历字典的键-值对items
my_dict {a: 1, b: 2, c: 3}
for key, value in my_dict.items(): print(key, value) 3.切片操作
c1HelloWorld
print(c1[:5])#指的是从[0,5)
print(c1[5:])#指的是 从[5,end]
print(c1[::5]) #指的是步长是54.True1 print(2True and 0False) 结果是False 因为2不等于1 5.
print(45 and 4 or 5 and 4*3**2 or not 86) 在Python中逻辑运算符如and和or的优先级低于比较运算符如但是它们仍然遵循一定的规则进行求值。同时Python使用“短路”行为即当确定整个逻辑表达式的结果时它会停止进一步的求值。 让我们逐步分析表达式 4 5 and 4 or 5 and 4 * 3 ** 2 or not 8 6 括号和优先级首先由于我们没有显式的括号我们需要知道运算符的优先级。在Python中not的优先级最高然后是and最后是or。此外乘方**的优先级高于乘法和除法再高于比较运算符最后才是逻辑运算符。从左到右求值在没有括号的情况下Python从左到右进行求值。 现在让我们逐步分析这个表达式 4 5这是False因为4不大于5。由于and是短路运算符如果其左侧为False则整个and表达式的结果就是False并且不会求值其右侧的部分。因此4 5 and 4的结果是False。接下来是or运算符。由于or的左侧即4 5 and 4的结果是Falseor运算符会求值其右侧的部分来确定整个表达式的结果。5 and 4 * 3 ** 2首先我们求值4 * 3 ** 2得到36因为乘方的优先级高于乘法。然后由于5是真值在布尔上下文中等于Trueand运算符会求值其右侧的部分即36。因此5 and 4 * 3 ** 2的结果是36。由于or运算符的左侧即4 5 and 4的结果是False而右侧即5 and 4 * 3 ** 2的结果是36在布尔上下文中也是真值因此整个or表达式的结果是36。最后not 8 6这部分是not True因为8确实大于6所以结果是False。但是由于我们已经确定了整个表达式的结果是36在前面的or运算中所以这部分的值不会影响最终的结果。 综上所述print(4 5 and 4 or 5 and 4 * 3 ** 2 or not 8 6)的结果是36。 6.
extend()函数和运算符 list.extend(iterable) (1)添加列表
demo_list [1,2,3]
demo_list.extend([4,5]) # 等效写法demo_list [4,5]
#list结果为 [1, 2, 3, 4, 5] (2)添加字符串
demo_list [1,2,3]
demo_list.extend(ab)
#list结果为 [1, 2, 3, a, b] (3)添加字典
demo_list [1,2,3]
demo_list.extend({apple:1,banana:2})
#list结果 [1, 2, 3, apple, banana] list.pop(index) 这里是索引删除第几个 pop的用法
list.remove(element) 这里是删除值 remove的用法 7.冒泡排序
# 使用 Python 冒泡排序算法对[23,56,34,12,78,6]进行由大到小
# 排序a[23,56,34,12,78,6]
endlen(a)while end!0:flag 0for i in range(0,end-1):if a[i1]a[i]:tempa[i1]a[i1]a[i]a[i]tempflag1if flag0:breakendend-1print(a)
8.类的属性 1. obj.__dict__
__dict__ 是一个存储对象属性的字典。对于自定义对象__dict__ 会包含所有实例变量不包括继承自类的属性除非它们被重写。
class MyClass:
def __init__(self):
self.a 1
self.b 2 obj MyClass()
print(obj.__dict__) # 输出: {a: 1, b: 2} 2. obj.__class__
__class__ 属性引用对象所属的类。
class MyClass: pass obj MyClass() print(obj.__class__) # 输出: class __main__.MyClass
3. class.__bases__
__bases__ 是一个元组包含了类继承的所有父类。对于单一继承这个元组只包含一个类对于多重继承它会包含多个类。
class Base1:
pass class Base2:
pass class MyClass(Base1, Base2):
pass print(MyClass.__bases__) # 输出: (class __main__.Base1, class __main__.Base2)
4. class.__base__
注意__base__ 属性并不是Python官方支持的。但在单继承的情况下它通常指向类的直接父类与 __bases__[0] 相同。在多继承的情况下使用 __base__ 可能会导致混淆因为它可能不指向你期望的父类。因此通常建议使用 __bases__。
但是为了示例这里是如何在单继承的情况下使用 __base__ 的
class Base:
pass class MyClass(Base):
pass print(MyClass.__base__) # 输出: class __main__.Base 5. class.__mro__
类的层次结构 class Base1: def method(self): return Base1 class Base2: def method(self): return Base2 class MyClass(Base1, Base2): pass print(MyClass.__mro__) # 输出类似: (class __main__.MyClass, class __main__.Base1, class __main__.Base2, class object) # 当我们调用 MyClass().method() 时Python 会首先查找 MyClass 是否定义了 method如果没有它会查找 Base1然后是 Base2最后是 object所有类的基类
9.深拷贝 v.s 浅拷贝
Python 中以 copy.deepcopy() 来实现对象的深度拷贝
深浅拷贝