Tag: arrays

Golang – 正确的方法来初始化空片

要声明一个空白的分片,并且大小不固定,最好这样做: mySlice1 := make([]int, 0) 要么 : mySlice2 := []int{} 只是想知道哪一个是正确的方法。 干杯

在PHP中需要一个类似于数组的结构,并且使用最less的内存

在我的PHP脚本中,我需要创build一个> 600k整数的数组。 不幸的是,我的web服务器memory_limit被设置为32M,所以当初始化数组脚本中止消息 致命错误:在第8行的/home/www/myaccount/html/mem_test.php中允许的内存大小为33554432个字节(尽力分配71个字节) 我意识到这样的事实,即PHP不会将数组值存储为纯整数,而是将其存储为比纯整数值(我的64位系统上的8个字节)大得多的z值。 我写了一个小脚本来估计每个数组入口使用多less内存,事实certificate,它恰好是128个字节。 128! 我需要大于73M才能存储arrays。 不幸的是,networking服务器不在我的控制之下,所以我不能增加memory_limit 。 我的问题是,是否有可能在PHP中创build一个使用较less内存的类似数组的结构。 我不需要这个结构是关联的(普通的索引访问是足够的)。 它也不需要dynamicresize – 我知道这个数组到底有多大。 而且,所有的元素都是相同的types。 就像一个很好的旧Carrays。 编辑:这样欺骗的解决scheme与32位整数开箱即用。 但是,即使你在64位系统上, pack()似乎也不支持64位整数。 为了在我的数组中使用64位整数,我应用了一些位操作。 也许下面的片段将有助于某人: function push_back(&$storage, $value) { // split the 64-bit value into two 32-bit chunks, then pass these to pack(). $storage .= pack('ll', ($value>>32), $value); } function get(&$storage, $idx) { // read two 32-bit chunks […]

声明一个常量数组

我努力了: const ascii = "abcdefghijklmnopqrstuvwxyz" const letter_goodness []float32 = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } const letter_goodness = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } const letter_goodness = []float32 { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } 首先,声明和初始化工作正常,但第二,第三和第四个不起作用。 我如何声明和初始化浮点数的const数组?

你如何在Go中清除一个片段?

在Go中清除切片的适当方法是什么? 以下是我在论坛中find的内容: // test.go package main import ( "fmt" ) func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = letters[:0] fmt.Println(cap(letters)) fmt.Println(len(letters)) } 它是否正确? 编辑:让我澄清,缓冲区被清除,所以可以重复使用。 字节包中的一个示例是Buffer.Truncate函数。 请注意,Reset仅调用截断(0)。 所以看起来在这种情况下,第70行会计算:b.buf = b.buf [0:0] http://golang.org/src/pkg/bytes/buffer.go // Truncate discards all but the first n unread bytes from the buffer. 60 // […]

从数组中删除nan值

我想弄清楚如何从我的数组中删除nan值。 它看起来像这样: x = [1400, 1500, 1600, nan, nan, nan ,1700] #Not in this exact configuration 我相对较新的Python,所以我还在学习。 有小费吗?

Ruby – 优雅地将variables转换为数组,如果不是数组的话

给定一个数组,单个元素或零,获得一个数组 – 后两个分别是一个单一的元素数组和一个空的数组。 我错误地认为Ruby会这样工作: [1,2,3].to_a #= [1,2,3] # Already an array, so no change 1.to_a #= [1] # Creates an array and adds element nil.to_a #= [] # Creates empty array 但是你真正得到的是: [1,2,3].to_a #= [1,2,3] # Hooray 1.to_a #= NoMethodError # Do not want nil.to_a #= [] # Hooray 所以要解决这个问题,我需要使用另一种方法,或者我可以通过修改我打算使用的所有类的to_a方法来进行元程序 – 这对我来说不是一种select。 所以一个方法是: result = […]

Ruby数组find_first对象?

我在Array文档中遗漏了什么? 我有一个数组,其中包含多达一个对象满足一定的标准。 我想有效地find这个对象。 我从文档中得到的最好的想法是这样的: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? 但是我不满意的原因有两个:(1)即使我们可以在第一次命中后获得保释,但是select使我遍历整个arrays,(2)我需要一行代码(有条件)来压平候选人。 两种操作都是浪费的,预知有0个或1个令人满意的对象。 我想要的是这样的: array.find_first(block) – >回答nil或array.find_first(block)的第一个对象为true,结束对象的遍历。 我必须自己写这个吗? Array中的所有其他伟大的方法都让我觉得它在那里,我只是没有看到它。 在此先感谢,丹

在Ruby中合并和交错两个数组

我有以下代码: a = ["Cat", "Dog", "Mouse"] s = ["and", "&"] 我想将数组合并到数组a ,这会给我: ["Cat", "and", "Dog", "&", "Mouse"] 通过Ruby数组和可枚举文档,我没有看到这样的方法,将实现这一点。 有没有一种方法,我可以做到这一点,而不是遍历每个数组?

数组元素的索引比O(n)快

鉴于我有一个巨大的数组,并从它的价值。 我想获得数组中的值的索引。 有没有其他的方法,而不是调用Array#index来获取它? 这个问题来自保持真正巨大的数组并且需要调用Array#index巨大的时间。 经过几次尝试之后,我发现通过使用(value, index)字段而不是值本身存储结构来caching索引内容会给性能带来巨大的一步(20倍的胜利)。 我仍然想知道是否有一个更方便的方式来find没有caching的元素索引(或者有一个很好的caching技术可以提高性能)。

如何在Ruby中随机sorting(争夺)一个数组?

我想有我的数组项目炒。 像这样的东西: [1,2,3,4].scramble => [2,1,3,4] [1,2,3,4].scramble => [3,1,2,4] [1,2,3,4].scramble => [4,2,3,1] 随机地等等