Tag: 元组

Go中的Pair / tuple数据types

在进行Tour of Go的最后一个练习时 ,我决定需要一个( string , int )对的队列。 这很简单: type job struct { url string depth int } queue := make(chan job) queue <- job{url, depth} 但是这让我想到:Go中是否有内置的pair / tuple数据types? 支持从一个函数返回多个值 ,但是AFAICT,产生的多值元组并不是Gotypes系统中的一等公民。 是这样吗? 至于“你有什么尝试”部分,显而易见的语法(来自Python程序员的POV) queue := make(chan (string, int)) 没有工作。

std :: tuple get()成员函数

boost::tuple有一个get()成员函数,像这样使用: tuple<int, string, string> t(5, "foo", "bar"); cout << t.get<1>(); // outputs "foo" 看来C ++ 0x std::tuple没有这个成员函数,你必须使用非成员函数的forms: std::get<1>(t); 这对我来说看起来很丑。 为什么std::tuple没有成员函数有什么特别的理由? 还是只是我的实现(GCC 4.4)?

Django的 – 如何做一个模板中的元组解开'循环'

在我的views.py中,我构build了一个两元组列表,其中元组中的第二个元素是另一个列表,如下所示: [ Product_Type_1, [ product_1, product_2 ], Product_Type_2, [ product_3, product_4 ]] 在普通的旧Python中,我可以像这样迭代列表: for product_type, products in list: print product_type for product in products: print product 我似乎无法在我的Django模板中做同样的事情: {% for product_type, products in product_list %} print product_type {% for product in products %} print product {% endfor %} {% endfor %} 我从Django得到这个错误: 捕捉exception,而渲染:zip参数#2必须支持迭代 当然,模板中有一些HTML标记,而不是打印语句。 Django模板语言不支持元组解包function吗? 或者我正在做这个错误的方式? […]

为什么Python的string和元组是不可变的?

我不确定为什么string和元组是不可变的。 使它们不可变的优点和缺点是什么?

为什么'()is()'在'为'时返回True,'{}是{'是'返回False?

从我已经知道,使用[], {}或()来实例化对象返回一个新的list, dict或tuple实例; 一个具有新身份的新实例对象。 这是相当清楚的,直到我真正testing它,我注意到() is ()实际上返回True而不是预期的False : >>> () is (), [] is [], {} is {} (True, False, False) 如预期的那样,这种行为在分别使用list() , dict()和tuple()创build对象时也performance出来: >>> tuple() is tuple(), list() is list(), dict() is dict() (True, False, False) 我可以在tuple()的文档中find唯一相关的信息: […]例如, tuple('abc')返回('a', 'b', 'c')和tuple([1, 2, 3])返回(1, 2, 3) 。 如果没有参数,构造函数将创build一个新的空元组() 。 我只想说,这还不足以回答我的问题。 那么,为什么空元组具有相同的身份,而其他的如列表或字典不是?

在什么情况下,我会使用一个元组作为字典键?

我正在研究列表和元组之间的区别 (用Python)。 显而易见的是元组是不可变的(初始赋值后不能更改值),而列表是可变的。 文章中的一句话让我感到: 只有不可变元素可以用作字典键,因此只有元组而不是列表可以用作关键字。 我很难考虑一个我想用元组作为字典键的情况。 您能否提供一个示例问题,这将是一个自然,高效,优雅或明显的解决scheme? 编辑: 谢谢你的例子。 到目前为止,我认为一个非常重要的应用是函数值的caching。

斯卡拉:我怎样才能sorting元组数组的第二个元素?

有没有一种方法在Scala中使用和任意比较函数对元组进行sorting? 特别是我需要通过第二个元素对元组进行sorting和排列,但是我想知道一个通​​用的技术来对元组进行sorting。 谢谢!

有没有办法轻松处理函数返回std :: pairs?

C ++ 11有函数std::minmax_element ,它返回一对值。 然而,这样处理和阅读是相当混乱的,并且产生了一个额外的,后来无用的variables来污染范围。 auto lhsMinmax = std::minmax_element(lhs.begin(), lhs.end()); int &lhsMin = *(lhsMinMax.first); int &lhsMax = *(lhsMinmax.second); 有一个更好的方法吗? 就像是: int lhsMin; int lhsMax; std::make_pair<int&, int&>(lhsMin, lhsMax).swap( std::minmax_element(lhs.begin(), lhs.end()));

自定义types“可绑定”(与std :: tie兼容)

考虑我有一个自定义types(我可以扩展): struct Foo { int a; string b; }; 我如何使这个对象的实例可分配给一个std::tie ,即std::tuple引用的std::tuple ? Foo foo = …; int a; string b; std::tie(a, b) = foo; 失败的尝试: 为tuple<int&,string&> = Foo重载赋值运算符是不可能的,因为赋值运算符是必须是左侧对象成员的二元运算符之一。 所以我试图通过实现一个合适的元组转换运算符来解决这个问题。 以下版本失败: operator tuple<int,string>() const operator tuple<const int&,const string&>() const 他们在赋值时导致错误,告诉“ operator =不会重载tuple<int&,string&> = Foo ”。 我想这是因为“转换为任何types的X +演绎模板参数X for operator =”不能一起工作,只能同时使用其中的一个。 不完美的尝试: 因此,我试图为领带的确切types实现一个转换操作符: operator tuple<int&,string&>() const Demo […]

在Ruby中使用元组?

有没有人在Ruby中使用元组? 如果是这样,怎么可能实现一个元组? Ruby哈希很好,工作也差不多,但是我真的很想看到像Python中的Tuple类,你可以使用它. 记法来find你正在寻找的价值。 我想要这个,所以我可以创build一个D的实现,类似于Python的Dee 。