所以,我是绿色的,从How to think like a computer scientist: Learn python 3学习编程。我能回答这个问题(见下文),但恐怕我错过了这节课。在
编写一个函数(称为insert_-end),该函数将为所有三个参数传递(返回前面两个参数的粗体):
test(insert_at_end(5, [1, 3, 4, 6]), **[1, 3, 4, 6, 5]**)
test(insert_at_end('x', 'abc'), **'abcx'**)
test(insert_at_end(5, (1, 3, 4, 6)), **(1, 3, 4, 6, 5)**)
这本书给出了这样的提示:“这些练习很好地说明了序列抽象是通用的,(因为切片、索引和连接非常通用),所以可以编写适用于所有序列类型的通用函数。”。在
这个版本没有在线的解决方案(我可以找到),但是在我找到了一些人对以前版本的文本的答案(对于python 2.7),他们是这样做的:
^{pr2}$它似乎通过区分列表和字符串来解决问题。。。与暗示背道而驰。那么,有没有一种方法可以不加区分地回答这个问题(以及大约10个类似的问题)?i、 e未使用“type()”
我的最大努力:
这将尝试创建
type(seq)
的序列,如果val
不可编辑,则生成一个列表并连接。在这不是一个解决方案,而是一个解释为什么一个真正优雅的解决方案看起来不可能。在
+
连接序列,但只连接相同类型的序列。在insert_at_end
的值是“标量”,因此必须将它们转换为第二个参数所具有的序列类型。在tuple(1)
不起作用。在str
与其他序列类型不同:tuple(["a"])
是("a",)
,list(["a"])
是{这使得
+
在这种情况下毫无用处,即使您可以轻松地构造一个给定类型的序列,而不需要instanceof
,只需使用type()
。在也不能使用切片赋值,因为只有列表是可变的。在
在这种情况下,@Hamish的解决方案看起来最干净。在
我认为这个例子不是符号化的,这意味着它要求读者处理两种不同的情况:
我认为,这项工作应该要求实现这一点:
在这种情况下,读取器只需要处理两个使用相同序列类型的参数,提示将更有意义。在
相关问题 更多 >
编程相关推荐