首页 新闻 会员 周边 捐助
0
回答数

已关闭问题 解题1----

l = "abcd" def f(x,result=["a","b","c","d"]): if x: result.remove(x[-1]) f(x[:-1]) return result pri
1
回答数

回答被采纳 自定义类如果用索引或者slice访问,只能在__getitem__()里面套用list等基本类型来取值吗,这不算是实现了__getitem__吧,不还是list自身取值吗,外面套了层壳

自定义类如果用索引或者slice访问,只能在__getitem__()里面套用list等基本类型来取值吗,这不算是实现了__getitem__吧,不还是list自身取值吗,外面套了层壳
1
回答数

回答被采纳 L[0] 和 L[0:2]/L[slice(0,2)] 在 CPython 底层走的是两条完全不同的代码路径

切片一定会新建一个 PyListObject;单个索引只是返回已有对象的引用 >>> import dis >>> dis.dis(lambda: L[0]) 1 0 LOAD_GLOBAL 0 (L
1
回答数

回答被采纳 Python 中,序列(如 list、tuple、str 等)之所以可以通过索引取值,是因为它们实现了 __getitem__ 方法

lst = [10, 20, 30]print(lst[1]) # 输出 20 这背后其实是调用了: lst.__getitem__(1) lst[1] → lst.__getitem__(1) 只是
1
回答数

回答被采纳 自定义迭代器中__iter__里面必须return 自身吗?

自定义迭代器de def __iter__(self): # 返回自身的迭代器 return self 中__iter__里面必须return 自身吗
1
回答数

已关闭问题 L = [11, 21, 31, 41] 和L[0:2]

L = [11, 21, 31, 41] 和L[0:2]
1
回答数

已关闭问题 为什么打印(1,2) (3,7) (1,2) (5,9)

z = zip([1, 3, 5], [2, 7, 9]) for x in z: # 外层 for y in z: # 内层(跟外层共用同一个 zip 迭代器) print(x, y, end='
1
回答数

回答被采纳 print(iter(map))和print(hasattr(map,"__iter__"))为什么结果不一致

print(iter(map)) # 报错:TypeError: 'type' object is not iterableprint(hasattr(map, "__iter__")) # True
1
回答数

已关闭问题 Python 字符串的所有方法都是返回新字符串(副本)的,不限于str.replace

因为字符串是不可变类型 —— 任何看似 “修改” 字符串的操作,本质上都必须创建新对象。
1
回答数

已关闭问题 Unicode 兼容 ASCII,ASCII 值恰好等于 Unicode 中对应字符的码位编号

Unicode 兼容 ASCII,ASCII 值恰好等于 Unicode 中对应字符的码位编号
0
回答数

已关闭问题 列表推导式中的变量和形参列表为什么不能重名,而可以和条件表达式重名

在 列表推导式 里,for x in ... 中的 x 只是 “循环变量”,它依次取迭代对象里的 每个元素,只在推导式内部有效。 在 条件表达式(三元运算符)... if x > 0 else ...
1
回答数

回答被采纳 条件表达式必须有else,那么lambda n: [i for i in range(n) if i % 2] 这个为啥可以,只有一个if,没有else

条件表达式必须有else,那么lambda n: [i for i in range(n) if i % 2] 这个为啥可以,只有一个if,没有else 这是列表推导式,“一行代码里,把原序列按规则过
0
回答数

已关闭问题 凡是“表达式”(expression)就可以出现在 lambda 的冒号右侧

能写: 类别例子能否放进 lambda 比较运算符 x == 3, x in s ✅ 逻辑运算符 x and y, not z ✅ 条件表达式(三元) x if x > 0 else 0 ✅ 短路求值
1
回答数

已关闭问题 lambda表达式有个清晰的结构

(lambda x: x > 0)就是lambda x: return x>0 ,冒号前面是形参,冒号后面少了隐形的return
1
回答数

回答被采纳 map(func, iterable, *iterables)

func 要调用的函数(或任何可调用对象)。 iterable 可迭代对象(列表、元组、字符串、生成器……)。 可以一次给多个可迭代对象,func 必须接受对应个数的参数。
0
回答数

已关闭问题 list( map(str.upper,"abcd") ) ['A', 'B', 'C', 'D'] ?

它是一个字符串,但在 Python 中,字符串是可迭代的,就像列表一样 这是字符串的一个方法,它的作用是把字符转换成大写: "a".upper() # → 'A' str 是一个类(builtins.
1
回答数

已关闭问题 为什么基本数据类型本身就是类啊,java的8中基本数据类型好像没有类的说法

Python 把“数据”和“行为”统一成对象模型,所以“基本数据”就是类;而 Java 把“值”和“对象”分裂成两套体系,因此有了“基本类型 vs 包装类”的区别。 Python 的“一切皆对象”哲学
1
回答数

已关闭问题 Python 中,条件表达式(即 x if condition else y)必须有 else 部分

lst = map(lambda x: 2*x if x>3,[1,2,3,4,5]) 为什么报语法错误
1
回答数

已关闭问题 enumerate和enum区别?

Enum是 "名词"(一种数据类型),而enumerate()是 "动词"(一个操作工具) enumerate()函数:这是 Python 的内置工具函数,用于在遍历可迭代对象时同时获取元素的索引和值
1
回答数

已关闭问题 filter与map区别?

>>> list(map(lambda x: x > 0, [-2, -1, 0, 1, 2]))[False, False, False, True, True] nums = [-2, -1, 0
1
回答数

回答被采纳 有哪些字节码指令是存入到符号表,哪些是存入到命名空间的

先把两个概念再钉死一次: 符号表(co_names、co_varnames、co_cellvars …)只读、编译期冻结,运行期没有任何字节码能写它。 命名空间(模块 dict、函数 fastloca
1
回答数

已关闭问题 编译期生成的字节码能重新绑定运行期间的对象?这能在字节码里面体现出来,有指令重新绑定过程?

@contextmanager def timer(): start = time.time() yield end = time.time() print(end-start) 这个编译成字节码对象
1
回答数

回答被采纳 符号表存的是字符串,怎么关联到运行期间local和global的字典,这两个字典运行期间才有啊,符号表是在编译期生成,怎么能关联到运行期间的命名空间?

符号表存的是字符串,怎么关联到运行期间local和global的字典,这两个字典运行期间才有啊,符号表是在编译期生成,怎么能关联到运行期间的命名空间?
1
回答数

已关闭问题 java引用类型和基本类型

. 与“基本类型”对比• 基本类型(8 个):byte, short, int, long, float, double, char, boolean• 引用类型:除了上述 8 个之外的所有类型 ◦
1
回答数

回答被采纳 python有没有Interface,abstract clas类型

list、tuple、dict 等没有直接继承 Iterable, 它们通过实现 __iter__() 方法来实现 Iterable 接口 java有Interface这种类型,class去imple