2010-08-17 30 views
24

Làm cách nào để xóa toàn bộ mảng, để lại toàn bộ mảng mà không có mục?Xóa toàn bộ mảng Python

Tôi muốn thực hiện việc này để tôi có thể lưu trữ các giá trị mới trong đó (bộ mới 100 nổi) và tìm giá trị tối thiểu.

Ngay bây giờ chương trình của tôi đang đọc tối thiểu từ các bộ trước khi tôi nghĩ bởi vì nó được thêm vào chính nó với tập trước đó vẫn còn trong đó. Tôi sử dụng .append by the way.

Trả lời

38

Lưu ý rằng listarray là các lớp khác nhau. Bạn có thể làm:

del mylist[:] 

Điều này thực sự sẽ sửa đổi danh sách hiện tại của bạn. Câu trả lời của David tạo một danh sách mới và gán nó cho cùng một biến. Điều bạn muốn phụ thuộc vào tình huống (ví dụ: bất kỳ biến nào khác có tham chiếu đến cùng một danh sách?).

Hãy thử:

a = [1,2] 
b = a 
a = [] 

a = [1,2] 
b = a 
del a[:] 

In ab mỗi lần thấy sự khác biệt.

+0

1 Heh chúng tôi đã viết gần như giống hệt nhau, nhưng y ou là người đầu tiên. –

+0

Thực sự, có mảng trong Python? Tôi không biết điều đó. (Thực ra tôi có thể đã biết nhưng quên) Dù sao +1 để mở rộng sự khác biệt giữa các câu trả lời của chúng tôi. Tôi chỉ đoán rằng sự khác biệt không quan trọng đối với OP. –

+0

tôi hiểu. giúp @david: yah, không có nhiều khác biệt đối với tôi. nhưng newbness của tôi đã bớt đi: P – pjehyun

18

Rất đơn giản:

array = [] 

sẽ thiết lập array là một danh sách trống. (Chúng được gọi là danh sách bằng Python, nhân tiện chứ không phải mảng)

Nếu điều đó không hiệu quả với bạn, hãy chỉnh sửa câu hỏi của bạn để bao gồm mẫu mã chứng minh sự cố của bạn.

+0

haha ​​wow nhờ – pjehyun

3

Vâng vâng mảng vẫn tồn tại, và không có họ không khác nhau vào các danh sách khi nói đến những thứ như delappend:

>>> from array import array 
>>> foo = array('i', range(5)) 
>>> foo 
array('i', [0, 1, 2, 3, 4]) 
>>> del foo[:] 
>>> foo 
array('i') 
>>> foo.append(42) 
>>> foo 
array('i', [42]) 
>>> 

Sự khác biệt đáng chú ý: bạn cần phải xác định loại khi tạo mảng và bạn tiết kiệm bộ nhớ với chi phí thêm thời gian chuyển đổi giữa loại C và loại Python khi bạn thực hiện arr[i] = expression hoặc arr.append(expression)lvalue = arr[i]

1

Trả lời câu hỏi mà có lẽ bạn nên hỏi, như "Tôi nhận 100 f loats hình thành một nơi nào đó; tôi cần phải đặt chúng trong một mảng hoặc danh sách trước khi tôi tìm ra tối thiểu "

trả lời: Không, nếu somewhere là một iterable, thay vì làm điều này:

temp = [] 
for x in somewhere: 
    temp.append(x) 
answer = min(temp) 

bạn có thể làm điều này:

answer = min(somewhere) 

Ví dụ:

answer = min(float(line) for line in open('floats.txt')) 
Các vấn đề liên quan