Questions tagged «list»


6
将一个类定义为自身列表的子类有什么缺点?
在我最近的项目中,我定义了一个带有以下标头的类: public class Node extends ArrayList<Node> { ... } 但是,在与我的CS教授讨论后,他说这堂课既“令人难以忘怀”又是“不良习惯”。我还没有发现第一个是特别真实的,第二个是主观的。 我这样做的理由是,我有一个对象的想法,该对象需要定义为可以具有任意深度的对象,在这种情况下,实例的行为可以通过自定义实现或几个类似对象相互作用的行为来定义。这将允许抽象对象,这些对象的物理实现将由许多相互作用的子组件组成。¹ 另一方面,我知道这可能是不好的做法。将某物定义为自身列表的想法不是简单的,也不是物理上可以实现的。 考虑到我的用法,有什么正当的理由为什么我不应该在代码中使用它? ¹如果需要进一步解释,我会很高兴;我只是想使这个问题简明扼要。

5
C#List <>中的.Any()有什么用?
我一直在与同事讨论这个问题,我们无法弄清楚C#中.Any任何给定的用途是什么List&lt;&gt;。 您可以像下面的语句那样检查数组中元素的有效性: if (MyList.Any()){ ...} //Returns true or false 完全一样 if (MyList.Count() != 0) { ... } 并且更加常见,易读并且清楚if声明的意图。 最后,我们陷入了这种想法: .Any() 可以使用,但效果也一样,但是对程序员的意图尚不清楚,因此不应该使用它。 但是我们觉得这是不对的。我们一定缺少一些东西。 是吗
40 c#  array  list 

6
为什么Python在迭代列表时仅复制单个元素?
我只是意识到在Python中,如果有人写 for i in a: i += 1 a实际上,原始列表的元素根本不会受到影响,因为该变量i原来只是中原始元素的一个副本a。 为了修改原始元素, for index, i in enumerate(a): a[index] += 1 将需要。 我真的为这种行为感到惊讶。这似乎很违反直觉,似乎与其他语言不同,并且导致了我的代码错误,而今天我不得不调试了很长时间。 我之前阅读过Python教程。可以肯定的是,我刚才再次检查了这本书,它甚至根本没有提到这种行为。 这种设计背后的原因是什么?难道它会成为许多语言的标准做法,以便本教程相信读者应该自然地获得它吗?以后我应该注意哪些其他语言的迭代行为?
31 python  list  iterator 

3
我应该使用列表还是数组?
我正在Windows窗体上计算项目编号的UPC。 我成功创建了一个可一次处理一个物料编号/ UPC的物料,现在我想扩展并针对多个物料编号/ UPC进行处理。 我已经开始尝试使用列表,但是我一直陷于困境。我创建了一个帮助器类: public class Codes { private string incrementedNumber; private string checkDigit; private string wholeNumber; private string wholeCodeNumber; private string itemNumber; public Codes(string itemNumber, string incrementedNumber, string checkDigit, string wholeNumber, string wholeCodeNumber) { this.incrementedNumber = incrementedNumber; this.checkDigit = checkDigit; this.wholeNumber = wholeNumber; this.wholeCodeNumber = wholeCodeNumber; this.itemNumber = …
22 c#  array  winforms  list 

5
为什么缺点列表与函数式编程相关联?
我注意到,大多数功能语言都使用单链接列表(“ cons”列表)作为其最基本的列表类型。示例包括Common Lisp,Haskell和F#。这与主流语言不同,后者的本地列表类型是数组。 这是为什么? 对于Common Lisp(是动态键入的),我得到的想法是,缺点非常普遍,足以成为列表,树等的基础。这可能是一个微小的原因。 但是,对于静态类型的语言,我找不到很好的推理,甚至可以找到反参数: 功能性风格会促进不变性,因此链表的插入容易程度较弱, 功能风格鼓励不变性,因此也鼓励数据共享。数组比链表更容易“部分”共享, 您也可以对常规数组进行模式匹配,甚至更好(例如,您可以轻松地从右向左折叠), 最重要的是,您可以免费获得随机访问, 并且(一个实际的优势),如果该语言是静态类型的,则可以采用常规的内存布局并从高速缓存中提高速度。 那么为什么偏爱链表?



1
C ++ 11支持高阶列表功能
大多数函数式编程语言(如Common Lisp的,计划/球拍,Clojure中,Haskell中,斯卡拉,ocaml的,SML)支持列出了一些常见的高阶功能,如map,filter,takeWhile,dropWhile,foldl,foldr(见如Common Lisp的,计划/球拍, Clojure并排参考表,Haskell,Scala,OCaml和SML文档。) C ++ 11是否在列表上具有等效的标准方法或函数?例如,考虑以下Haskell代码段: let xs = [1, 2, 3, 4, 5] let ys = map (\x -&gt; x * x) xs 如何在现代标准C ++中表达第二个表达式? std::list&lt;int&gt; xs = ... // Initialize the list in some way. std::list&lt;int&gt; ys = ??? // How to translate the Haskell expression? 上面提到的其他高阶函数呢? …

1
通用列表处理功能名称的由来
重复采用或重新发明了一些用于对列表或数组进行操作的高阶函数。功能映射,折叠 [ l | r ]和filter是在几种编程语言中一起发现的,例如Scheme,ML和Python,它们似乎没有共同的祖先。我将使用这三个名称来使问题集中。 为了表明名称不是通用的,这里是其他语言等效功能的名称示例。C ++ 转换而不是map,而remove_if而不是filter(颠倒了谓词的含义)。Lisp使用mapcar代替map,使用remove-if-not代替filter,并用reduce代替fold(某些现代Lisp变体具有map,但这似乎是派生形式。)C#使用Select代替map,而Where代替过滤器。C#的名称来自SQL,是通过LINQ进行的,尽管更改了名称,但其功能却受到Haskell的影响,而Haskell本身也受到ML的影响。 map,fold和filter的名称很普遍,但并不通用。这表明它们是从有影响力的来源借用到其他当代语言的。这些函数名称从何而来?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.