阅读Python 3.1中的更改,我发现了一些......意外的:
sys.version_info元组现在是一个命名元组:
我之前从未听说过命名元组,我认为元素可以用数字(如元组和列表)或键(如dicts)索引.我从没想过他们可以两种方式编入索引.
因此,我的问题是:
有没有一个很好的理由为什么Pair<L,R>
Java中没有?这个C++构造的等价物是什么?我宁愿避免重新实现自己.
似乎1.6提供类似的东西(AbstractMap.SimpleEntry<K,V>
),但这看起来很复杂.
我在列表列表或元组列表中有一些数据,如下所示:
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
Run Code Online (Sandbox Code Playgroud)
我想按子集中的第二个元素排序.意思是,按2,5,8排序,其中2来自(1,2,3),5来自(4,5,6).这样做的常用方法是什么?我应该在列表中存储元组或列表吗?
我正在尝试将列表转换为元组.
当我谷歌它,我发现很多答案类似于:
l = [4,5,6]
tuple(l)
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,我收到此错误消息:
TypeError:'tuple'对象不可调用
我该如何解决这个问题?
在Python中,何时应该使用列表和何时使用元组?
有时你没有选择权,例如你有
"hello %s you are %s years old" % x
Run Code Online (Sandbox Code Playgroud)
然后x必须是一个元组.
但如果我是设计API并选择数据类型的人,那么指导原则是什么?
有没有办法将Python元组扩展为函数 - 作为实际参数?
例如,这里expand()
有魔力:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Run Code Online (Sandbox Code Playgroud)
我知道可以定义myfun
为myfun((a, b, c))
,但当然可能有遗留代码.谢谢
我有一个类似于下面的元组列表:
[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
Run Code Online (Sandbox Code Playgroud)
我想按元组内的整数值按升序对此列表进行排序.可能吗?
Java中的Hashtable将受益于具有元组结构的值.我可以在Java中使用哪种数据结构来做到这一点?
Hashtable<Long, Tuple<Set<Long>,Set<Long>>> table = ...
Run Code Online (Sandbox Code Playgroud) 众所周知,有列表理解,比如
[i for i in [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)
并且有字典理解,比如
{i:j for i, j in {1: 'a', 2: 'b'}.items()}
Run Code Online (Sandbox Code Playgroud)
但
(i for i in (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
将最终成为一个发电机,而不是tuple
理解.这是为什么?
我的猜测是a tuple
是不可变的,但这似乎不是答案.
python tuples list-comprehension dictionary-comprehension set-comprehension
tuples ×10
python ×8
list ×4
java ×2
namedtuple ×1
python-2.7 ×1
sorting ×1
std-pair ×1
types ×1