คำถามติดแท็ก slice

สไลซ์คือการแสดงส่วนหนึ่งของลำดับซึ่งมักกำหนดโดยการอ้างอิงถึงลำดับพื้นฐานดัชนีที่ให้ตำแหน่งเริ่มต้นความยาวหรือตำแหน่งสิ้นสุดและเป็นทางเลือกที่จะเป็นค่า "ก้าว" หรือ "ก้าว" โปรดใช้แท็ก "object-slicing" สำหรับปัญหาการแบ่งส่วนใน C ++ และ "program-slicing" สำหรับเทคนิคการวิเคราะห์

15
หยิบเซกเมนต์ของอาร์เรย์ใน Java โดยไม่ต้องสร้างอาร์เรย์ใหม่บนฮีป
ฉันกำลังมองหาวิธีใน Java ที่จะกลับส่วนของอาร์เรย์ ตัวอย่างจะได้รับอาร์เรย์ไบต์ที่มีไบต์ที่ 4 และ 5 ของอาร์เรย์ไบต์ ฉันไม่ต้องการสร้างอาร์เรย์ไบต์ใหม่ในหน่วยความจำฮีปเพื่อทำเช่นนั้น ตอนนี้ฉันมีรหัสต่อไปนี้: doSomethingWithTwoBytes(byte[] twoByteArray); void someMethod(byte[] bigArray) { byte[] x = {bigArray[4], bigArray[5]}; doSomethingWithTwoBytes(x); } ฉันต้องการทราบว่ามีวิธีที่จะทำdoSomething(bigArray.getSubArray(4, 2))โดยที่ 4 คือออฟเซ็ตและ 2 คือความยาวตัวอย่างเช่น
181 java  arrays  slice 

7
การแบ่งส่วนของอาร์เรย์ NumPy 2d หรือฉันจะแยก submatrix mxm ออกจากอาร์เรย์ nxn (n> m) ได้อย่างไร
ฉันต้องการแบ่งอาร์เรย์ NumPy nxn ฉันต้องการที่จะแยกโดยพลการเลือกแถวม. และคอลัมน์ของอาร์เรย์นั้น (คือไม่มีรูปแบบใด ๆ ในจำนวนของแถว / คอลัมน์) ทำให้มันใหม่ MXM อาร์เรย์ สำหรับตัวอย่างนี้ให้เราบอกว่าอาร์เรย์เป็น 4x4 และฉันต้องการที่จะดึงอาร์เรย์ 2x2 ออกมา นี่คืออาร์เรย์ของเรา: from numpy import * x = range(16) x = reshape(x,(4,4)) print x [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] …
174 python  numpy  slice 



2
เลือกแถวในแพนด้า MultiIndex DataFrame
สิ่งที่เป็นที่สุดวิธีหมีแพนด้าทั่วไปเพื่อเลือก / แถวกรองของdataframe ซึ่งเป็นดัชนี MultiIndex ? การแบ่งส่วนตามค่า / ป้ายกำกับเดียว การแบ่งส่วนตามป้ายกำกับหลายรายการตั้งแต่หนึ่งระดับขึ้นไป การกรองเงื่อนไขและนิพจน์บูลีน วิธีการใดที่ใช้ได้ในสถานการณ์ใด สมมติฐานเพื่อความเรียบง่าย: อินพุตดาต้าเฟรมไม่มีคีย์ดัชนีที่ซ้ำกัน อินพุตดาต้าเฟรมด้านล่างมีสองระดับเท่านั้น (วิธีแก้ปัญหาส่วนใหญ่ที่แสดงไว้ที่นี่เป็นระดับ N) ตัวอย่างการป้อนข้อมูล: mux = pd.MultiIndex.from_arrays([ list('aaaabbbbbccddddd'), list('tuvwtuvwtuvwtuvw') ], names=['one', 'two']) df = pd.DataFrame({'col': np.arange(len(mux))}, mux) col one two a t 0 u 1 v 2 w 3 b t 4 u 5 v 6 …

3
วิธีการรวมสตริงเป็นสตริงเดียว?
package main import ( "fmt" "strings" ) func main() { reg := [...]string {"a","b","c"} fmt.Println(strings.Join(reg,",")) } ทำให้ฉันมีข้อผิดพลาด: prog.go: 10: ไม่สามารถใช้ reg (type [3] string) เป็น type [] string ในการโต้แย้ง strings เข้าร่วม มีวิธีที่ตรงกว่า / ดีกว่าการวนซ้ำและเพิ่มลงใน var หรือไม่?
130 go  slice 

6
จะส่งคืนส่วนหนึ่งของอาร์เรย์ใน Ruby ได้อย่างไร?
ด้วยรายการใน Python ฉันสามารถส่งคืนส่วนหนึ่งโดยใช้รหัสต่อไปนี้: foo = [1,2,3,4,5,6] bar = [10,20,30,40,50,60] half = len(foo) / 2 foobar = foo[:half] + bar[half:] เนื่องจาก Ruby ทำทุกอย่างในอาร์เรย์ฉันจึงสงสัยว่ามีบางอย่างที่คล้ายกันหรือไม่
125 ruby  arrays  list  slice 

3
คุณจะล้างชิ้นส่วนใน Go ได้อย่างไร?
วิธีที่เหมาะสมในการล้างชิ้นส่วนใน Go คืออะไร? นี่คือสิ่งที่ฉันพบในฟอรัม go : // 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ในแพ็คเกจไบต์ สังเกตว่ารีเซ็ตเพียงแค่เรียก Truncate (0) ดังนั้นดูเหมือนว่าในกรณีนี้บรรทัดที่ 70 จะประเมิน: b.buf = b.buf [0: 0] http://golang.org/src/pkg/bytes/buffer.go …
125 arrays  go  slice 

6
เหตุใดฉันจึงไม่สามารถทำสำเนาชิ้นส่วนด้วย `copy ()` ได้?
ฉันต้องการทำสำเนาชิ้นส่วนใน Go และอ่านเอกสารมีฟังก์ชั่นการคัดลอกให้ฉันใช้ ฟังก์ชันคัดลอกในตัวจะคัดลอกองค์ประกอบจากชิ้นส่วนต้นทางไปยังชิ้นส่วนปลายทาง (ในกรณีพิเศษมันจะคัดลอกไบต์จากสตริงไปยังส่วนของไบต์ด้วย) ต้นทางและปลายทางอาจทับซ้อนกัน Copy ส่งคืนจำนวนองค์ประกอบที่คัดลอกซึ่งจะเป็นค่าต่ำสุดของ len (src) และ len (dst) แต่เมื่อฉันทำ: arr := []int{1, 2, 3} tmp := []int{} copy(tmp, arr) fmt.Println(tmp) fmt.Println(arr) ของฉันtmpว่างเปล่าเหมือนเดิม (ฉันพยายามใช้ด้วยซ้ำarr, tmp): [] [1 2 3] คุณสามารถตรวจสอบที่ไปสนามเด็กเล่น เหตุใดฉันจึงไม่สามารถคัดลอกชิ้นส่วนได้?
122 go  slice 

5
การใช้การแบ่งส่วนใน __getitem__
ฉันกำลังพยายามใช้ฟังก์ชัน slice สำหรับคลาสที่ฉันกำลังสร้างซึ่งสร้างการแสดงเวกเตอร์ จนถึงตอนนี้ฉันมีรหัสนี้ซึ่งฉันเชื่อว่าจะใช้ชิ้นส่วนได้อย่างถูกต้อง แต่เมื่อใดก็ตามที่ฉันทำการโทรเช่นv[4]ที่ v เป็นเวกเตอร์หลามส่งกลับข้อผิดพลาดเกี่ยวกับการมีพารามิเตอร์ไม่เพียงพอ ดังนั้นฉันจึงพยายามหาวิธีกำหนดgetitemวิธีพิเศษในชั้นเรียนของฉันเพื่อจัดการทั้งดัชนีธรรมดาและการแบ่งส่วน def __getitem__(self, start, stop, step): index = start if stop == None: end = start + 1 else: end = stop if step == None: stride = 1 else: stride = step return self.__data[index:end:stride]

2
วิธีที่กระชับในการสร้างชิ้นงาน 2 มิติใน Go คืออะไร?
ฉันเรียนรู้ไปโดยจะผ่านทัวร์ของไป หนึ่งของการออกกำลังกายมีถามฉันเพื่อสร้างชิ้น 2D ของdyแถวและคอลัมน์ที่มีdx uint8แนวทางปัจจุบันของฉันซึ่งใช้ได้ผลคือ: a:= make([][]uint8, dy) // initialize a slice of dy slices for i:=0;i<dy;i++ { a[i] = make([]uint8, dx) // initialize a slice of dx unit8 in each of dy slices } ฉันคิดว่าการทำซ้ำในแต่ละชิ้นเพื่อเริ่มต้นมันดูละเอียดเกินไป และถ้าชิ้นส่วนมีขนาดมากขึ้นโค้ดก็จะดูเทอะทะ มีวิธีที่กระชับในการเริ่มต้นชิ้นงาน 2 มิติ (หรือ n มิติ) ใน Go หรือไม่
111 go  slice 

6
จะหาตำแหน่งองค์ประกอบในชิ้นได้อย่างไร?
เราจะกำหนดตำแหน่งขององค์ประกอบที่อยู่ในชิ้นได้อย่างไร? ฉันต้องการสิ่งต่อไปนี้: type intSlice []int func (slice intSlice) pos(value int) int { for p, v := range slice { if (v == value) { return p } } return -1 }
108 position  go  slice 

5
แยกองค์ประกอบของรายการที่ตำแหน่งคี่
ดังนั้นฉันต้องการสร้างรายการซึ่งเป็นรายการย่อยของรายการที่มีอยู่บางส่วน ตัวอย่างเช่น, L = [1, 2, 3, 4, 5, 6, 7]ฉันต้องการสร้างรายการย่อยliที่liมีองค์ประกอบทั้งหมดในLตำแหน่งคี่ ในขณะที่ฉันสามารถทำได้โดย L = [1, 2, 3, 4, 5, 6, 7] li = [] count = 0 for i in L: if count % 2 == 1: li.append(i) count += 1 แต่ฉันต้องการทราบว่ามีวิธีอื่นที่จะทำได้อย่างมีประสิทธิภาพและมีจำนวนขั้นตอนน้อยกว่านี้หรือไม่
102 python  list  slice 


4
การมอบหมายงานกับ Python list slice อย่างไร
Python doc บอกว่าการแบ่งส่วนรายการจะส่งคืนรายการใหม่ ตอนนี้หากมีการส่งคืนรายการ "ใหม่" ฉันมีคำถามต่อไปนี้ที่เกี่ยวข้องกับ "การมอบหมายให้กับชิ้นส่วน" a = [1, 2, 3] a[0:2] = [4, 5] print a ตอนนี้ผลลัพธ์จะเป็น: [4, 5, 3] สิ่งที่ส่งคืนบางสิ่งมาทางด้านซ้ายของการแสดงออกได้อย่างไร? ใช่ฉันอ่านเอกสารแล้วและบอกว่าเป็นไปได้แล้วเนื่องจากการแบ่งส่วนรายการจะส่งคืนรายการ "ใหม่" เหตุใดจึงมีการแก้ไขรายการเดิม ฉันไม่สามารถเข้าใจกลไกที่อยู่เบื้องหลังมัน
102 python  list  slice 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.