我在ipython中运行以下代码,并对代码的打印输出和ipython单元格输出感到惊讶:
React.DOM.render(<App/>, document.getElementById('app'))
上述程序的输出如下:
print set(["A", "B", "C"])
print set(["A", "C", "B"])
print list(set(["A", "C", "B"]))
print list(set(["A", "B", "C"]))
print [k for k in set(["A", "C", "B"])]
print [k for k in set(["A", "B", "C"])]
a = set(["A", "B", "C"])
print a
print a.__repr__()
print a.__str__()
print [(k, hash(k)) for k in a]
a
请注意,单元格输出为set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
['A', 'C', 'B']
['A', 'C', 'B']
['A', 'C', 'B']
['A', 'C', 'B']
set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
set(['A', 'C', 'B'])
[('A', -269909568), ('C', -13908798), ('B', -141909181)]
Out[34]: {'A', 'B', 'C'}
,而打印输出为{'A', 'B', 'C'}
我的Python详细信息如下:
set(['A', 'C', 'B'])
答案 0 :(得分:2)
IPython使用不同的打印功能:
In [1]: from IPython.lib.pretty import pprint
In [2]: a = set(["A", "B", "C"])
In [3]: pprint(a)
{'A', 'B', 'C'}
In [4]: a
Out[4]: {'A', 'B', 'C'}
答案 1 :(得分:1)
IPython不时添加一些魔力,使事物更具可读性。
在这种情况下,它会显示一个set literal(python2.7中的new)
以下是实现这一目标的代码:
答案 2 :(得分:0)
这是因为set
是无序序列。定义set
时,不会对其进行排序。当您尝试打印它时,它需要提供某种方式来对其进行排序,但它与set
的元素的顺序无关。此外,当您尝试从list
创建set
时,需要提供一些订单。它提出的顺序总是相同的,但它与元素的顺序完全无关。