将一个可迭代的所有项添加到现有的"一种明显的方法"是set什么?
我有一个大小< N的列表,我想用一个值填充大小为N.
当然,我可以使用类似下面的东西,但我觉得应该有一些我错过的东西:
>>> N = 5
>>> a = [1]
>>> map(lambda x, y: y if x is None else x, a, ['']*N)
[1, '', '', '', '']
Run Code Online (Sandbox Code Playgroud) 在PostgreSQL中创建表时,如果未提供,将分配默认约束名称:
CREATE TABLE example (
a integer,
b integer,
UNIQUE (a, b)
);
Run Code Online (Sandbox Code Playgroud)
但是使用ALTER TABLE添加约束似乎是名称是强制性的:
ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);
Run Code Online (Sandbox Code Playgroud)
这导致了我所参与的项目的一些命名不一致,并提示以下问题:
有没有一种简单的方法可以在现有表中添加一个约束,如果在表创建期间添加了该约束,它将会收到该名称?
如果没有,是否应该完全避免默认名称以防止出现不一致?
我有一个包含空列表的列表:
list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText']
Run Code Online (Sandbox Code Playgroud)
如何删除空列表以便我得到:
list2 = ['text', 'text2', 'moreText']
Run Code Online (Sandbox Code Playgroud)
我尝试了list.remove(''),但这不起作用.
在Coders at Work(p355)一书中,Guy Steele谈到了C++:
我认为向后兼容C的决定是一个致命的缺陷.这只是一系列无法克服的困难.C基本上有一个腐败型系统.它足以帮助你避免一些困难,但它不是密不透风的,你不能指望它
将类型系统描述为"腐败"是什么意思?
你能用C中的一个简单例子来证明吗?
编辑:
引用听起来很有争议,但我并不想成为.我只想了解他的意思.
请举例说明C而不是C++.我也对"基本"部分感兴趣:)
我想在PHP中使用缩进来回显JSON,就像echo "<pre>";缩进数组一样.
有没有我可以像这样缩进JSON的功能?
由于POST/Redirect/GET(PRG)模式中的POST请求303 See Other成功返回redirect()状态代码,因此可以告知客户端他们要享受的特定成功风格(例如,OK,Created ,接受等)以及任何适当的标题(例如,Location对于a 201 Created,可能与重定向的标题冲突)?
例如,是否适合使重定向的GET响应POST响应所期望的正确响应代码和标题?
在HTTP 1.1规范说:
该方法[303]主要用于允许输出POST激活的脚本以将用户代理重定向到所选择的资源.
但是没有提供任何有关更常见的状态代码和标头丢失的见解.
编辑 - 一个例子:
客户端发送POST请求,在/orders该请求中创建新资源/orders/1.
如果服务器发送201 Created状态location: /orders/1,自动客户端会很高兴,因为它知道资源已创建,并且它知道它在哪里,但使用Web浏览器的人会不高兴,因为他们/orders再次获取页面,如果他们刷新它们他们将发送另一个订单,这不太可能是他们想要的.
如果服务器发送一个303 See Other状态,location: /orders/1人类将被带到他们的订单,通知它的存在和状态,并且不会有意外重复它的危险.但是,自动客户端不会明确告知资源的创建,它必须根据location标头推断创建.此外,如果303重定向到其他地方(例如/users/someusername/orders),人类可能会得到很好的适应,但自动化客户端却没有明显的信息.
我的建议是,发送201 Created的响应对新资源重定向的GET请求,但我越去想它,我喜欢它的少(可能会非常棘手,以确保只有创建者接收的201,它不应该出现的GET请求创建了资源).
在这种情况下,最佳响应是什么?
+在使用的方案程序中重新定义运算符时,我收到了意外的结果guile.我应该指出,这是在尝试理解语言时发生的; 这里没有尝试编写有用的程序.
这是代码:
(define (f a b) 4)
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "4,4"
(define (+ a b) 5)
(define (f a b) 5)
(show)
; mit-scheme: "5,5"
; guile: "4,5" - this "4" is the unexpected result
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "5,5"
Run Code Online (Sandbox Code Playgroud)
在guile函数中show使用了预定义的定义,+即使在我重新定义它之后,它也使用了新的定义 …
是否有Unicode字符来表示帐簿/五杆门的风格的5捆(和部分包)?
如果没有,那么这个问题最标准/语义/可访问的解决方案是什么?
我试过但不喜欢的事情:
参考文献:
非常感谢!
有关解包单值元组的一些相关 问题,但我想知道在共享和维护代码的可读性方面是否存在首选方法.当他们涉及像ORM查询这样的长期功能链时,我发现这些是同事之间混淆或误读的根源.
是否有一些类似于pep8指南的约定?如果没有,这是最清晰,最易读的方法吗?
以下是我尝试过的方法,以及我对它们的看法.
两种常见但容易错过的常用方法:
value, = long().chained().expression().that().returns().tuple()
value = long().chained().expression().that().returns().tuple()[0]
Run Code Online (Sandbox Code Playgroud)
函数是显式的,但非标准的:
value = unpack_tuple(long().chained().expression().that().returns().tuple())
Run Code Online (Sandbox Code Playgroud)
也许总是评论最清楚?
# unpack single-value tuple
value, = long().chained().expression().that().returns().tuple()
Run Code Online (Sandbox Code Playgroud) python ×4
list ×2
c ×1
c++ ×1
coding-style ×1
constraints ×1
conventions ×1
guile ×1
http ×1
iterable ×1
json ×1
numbers ×1
operators ×1
php ×1
postgresql ×1
scheme ×1
semantics ×1
set ×1
tuples ×1
type-systems ×1
unicode ×1