python>=3.5可选:解包到列表文本中
   
   
    [*newdict]
   
  
  
   新的
   
    unpacking generalizations (PEP 448)
   
   与python 3.5一起引入,现在您可以轻松地执行以下操作:
  
  >>> newdict = {1:0, 2:0, 3:0}
>>> [*newdict]
[1, 2, 3]
  
   打开包装
   
    *
   
   与一起工作
   
    任何
   
   对象,它是可Iterable的,并且由于字典在遍历时返回它们的键,所以您可以通过在列表文本中使用它轻松地创建列表。
  
  
   添加
   
    .keys()
   
   即
   
    [*newdict.keys()]
   
   可能有助于使您的意图更明确一点,尽管这会使您损失函数查找和调用。(老实说,这不是你应该做的事
   
    真正地
   
   担心)。
  
  
   
    这个
    
     *iterable
    
    语法类似于
    
     list(iterable)
    
    其行为最初记录在
    
     Calls section
    
    python参考手册。在PEP 448中,限制
    
     *无法识别
    
    可能出现的是松动的,允许它也被放在列表、集合和元组文本中,参考手册
    
     Expression lists
    
    也更新了以说明这一点。
   
  
  
  
   虽然相当于
   
    list(newdict)
   
   不同的是,它更快(至少对于小字典而言),因为实际上没有执行函数调用:
  
  %timeit [*newdict]
1000000 loops, best of 3: 249 ns per loop
%timeit list(newdict)
1000000 loops, best of 3: 508 ns per loop
%timeit [k for k in newdict]
1000000 loops, best of 3: 574 ns per loop
  
   对于较大的字典,速度几乎是相同的(遍历大型集合的开销比函数调用的成本小)。
  
  
  
   以类似的方式,您可以创建元组和字典键集:
  
  >>> *newdict,
(1, 2, 3)
>>> {*newdict}
{1, 2, 3}
  
   注意元组中的尾随逗号!