2013-04-08 78 views
7

Tôi đã được yêu cầu chấp nhận danh sách số nguyên (x), thêm giá trị đầu tiên và giá trị cuối cùng trong danh sách, sau đó trả về một số nguyên với tổng. Tôi đã sử dụng mã sau đây để làm điều đó, nhưng vấn đề tôi có là khi tôi cố gắng để đánh giá tổng nó thực sự là một danh sách một mặt thay vì một số nguyên. Tôi đã cố gắng để đúc nó vào một int nhưng tôi dường như không thể làm cho nó hoạt động.Chuyển đổi danh sách một mục thành số nguyên

def addFirstAndLast(x): 
    lengthOfList = len(x) 
    firstDigit = x[0:1] 
    lastDigit = x[lengthOfList:lengthOfList-1] 
    sum = firstDigit + lastDigit 
    return sum 
+0

Hành vi sẽ là gì nếu 'x' chứa một số? Nó có nên trả về 'x [0]' hoặc '2 * x [0]' không? –

Trả lời

13

Sử dụng chỉ số

Bạn đang slicing danh sách, mà trở lại danh sách. Ở đây, bạn nên sử dụng các chỉ số thay vì:

firstDigit = x[0] 
lastDigit = x[-1] 

Tại sao slicing sai cho bạn:

Khi bạn làm x[0:1], bạn đang dùng danh sách các mặt hàng từ đầu danh sách đến khoảng đầu tiên.

item0, item1, item2, item3 
^ interval 0 
     ^interval 1 
      ^interval 2 
        ^interval 3  

Làm x[0:2], ví dụ, sẽ quay trở lại mục 0 và 1.

4

Tất cả nắm như thế này:

def addFirstAndLast(x): 
    return x[0] + x[-1] 

Trong Python, một chỉ số danh sách tiêu cực có nghĩa là: bắt đầu lập chỉ mục từ bên phải của danh sách theo hướng bên trái, trong đó vị trí đầu tiên từ phải sang trái là -1, vị trí thứ hai là -2 và vị trí cuối cùng là -len(lst).

4

Sử dụng Slice Notation:

def addFirstAndLast(x): 
    return x[0] + x[-1] 

x [0] = sẽ cung cấp cho bạn 0 thứ chỉ số của danh sách, giá trị đầu tiên.

x [-1] = sẽ cung cấp cho bạn phần tử cuối cùng của danh sách.

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