2013-09-02 82 views
9

CẬP NHẬT:Python: Chia danh sách thành các danh sách dựa trên chỉ số dãy

Trong python, làm thế nào để tôi chia danh sách thành các danh sách dựa trên chỉ số dao động

ví dụ danh sách ban đầu:

list1 = [x,y,z,a,b,c,d,e,f,g] 

sử dụng chỉ số dao động 0-4:

list1a = [x,y,z,a,b] 

sử dụng chỉ số dao động 5-9:

list1b = [c,d,e,f,g] 

cảm ơn!

Tôi đã biết chỉ số (biến) của các phần tử danh sách chứa chuỗi nhất định và muốn chia danh sách dựa trên các giá trị chỉ mục này.

Cũng cần phải chia thành số lượng phụ danh sách thay đổi! tức là:

list1a 
list1b 
. 
. 
list1[x] 
+3

'list1a = list1 [0: 5]'. Điều này được gọi là cắt. – rlms

Trả lời

6

Lưu ý rằng bạn có thể sử dụng một biến trong một lát:

l = ['a',' b',' c',' d',' e'] 
c_index = l.index("c") 
l2 = l[:c_index] 

này sẽ đặt hai mục đầu tiên của l trong l2

+0

Thực ra, điều này sẽ đặt 2 phần tử đầu tiên của l vào l2. Chỉ mục của 'c' là 2, và chỉ mục kết thúc trong danh sách python nối như thế này không được bao gồm trong danh sách kết quả trả về. – josiah

+1

Cảm ơn, đã sửa nó. –

2
list1a=list[:5] 
list1b=list[5:] 
+0

cảm ơn! nhưng nếu chỉ mục là biến số/không biết – 2one

+0

thì bạn muốn chia tách những gì? chia thành hai nửa? – no1

+0

cả hai biến. dựa trên chỉ mục của phần tử danh sách chứa chuỗi nhất định cũng là biến. tức là chỉ số phần tử chia tách là biến số – 2one

11

Trong python, nó được gọi là cắt. Dưới đây là ví dụ về python's slice notation:

>>> list1 = ['a','b','c','d','e','f','g','h', 'i', 'j'] 
>>> print list1[:5] 
['a', 'b', 'c', 'd', 'e'] 
>>> print list1[-5:] 
['f', 'g', 'h', 'i', 'j'] 

Lưu ý cách bạn có thể cắt dương hoặc âm. Khi bạn thêm một số âm, nó có nghĩa là chúng ta cắt từ phải sang trái.

2
list1=['x','y','z','a','b','c','d','e','f','g'] 
find=raw_input("Enter string to be found") 
l=list1.index(find) 
list1a=[:l] 
list1b=[l:] 
+0

hy vọng đây là những gì bạn đang tìm kiếm! – no1

+0

Đừng ghi đè lên 'danh sách' được tích hợp sẵn. Ngoài ra, 'list.index' chỉ tìm thấy lần xuất hiện đầu tiên. – TerryA

+0

đã được chỉnh sửa! cảm ơn bạn! – no1

2

Nếu bạn đã biết các chỉ số:

list1 = ['x','y','z','a','b','c','d','e','f','g'] 
indices = [(0, 4), (5, 9)] 
print [list1[s:e+1] for s,e in indices] 

Lưu ý rằng chúng tôi đang thêm 1 đến cùng để làm cho phạm vi bao gồm ...

Các vấn đề liên quan