Danh sách Python chèn chỉ mục phủ định

Wayne Werner waynejwerner tại gmail. com
Thứ tư ngày 6 tháng 1 16. 45. 43 CET 2010
On Wed, Jan 6, 2010 at 8:54 AM, spir <denis.spir at free.fr> wrote:

> Hello,
>
> Just found something rather misleading with negative indices:
>
> s = [1,2,3,4,5,6,7,8,9]
> print s, s[-3], s[-4]   # [1, 2, 3, 4, 5, 6, 7, 8, 9] 7 6
> s.insert(-3, 0)
> print s, s[-3], s[-4]   # [1, 2, 3, 4, 5, 6, 0, 7, 8, 9] 7 0
>
> So, I did insert 0 at index -3, but s[-3] is still 7, & 0 is in fact at
> index -4. Well, this can be explained: insertion adds an index, there are
> now 10, so when counting backwards a given index does not point to the same
> position/item anymore than before insertion. Still, it's a bit disturbing.
> What do you think?
> (And: should insert behave so that 0 actually is at index -3, meaning
> insert it after 7?)
>
> (No issue with positive indices, indeed.)
>

I think it may just be an issue with misunderstanding what the insert does:

>>> help(list.insert)

insert(...)
    L.insert(index, object) -- insert object before index

When you insert(-3, 0) you are inserting 0 before index -3. When it says
"before" it has nothing to do with the direction of travel.

And when you say there's no issue with positive indices, take a look at this
case:

In [6]: s = [1,2,3]

In [7]: s[0]
Out[7]: 1

In [8]: s.insert(0,0)

In [9]: s[0]
Out[9]: 0

(ignoring mathematical considerations about the sign of 0)

You get a different value at the same position.

It seems that your confusion lies with this statement:
"insertion adds an index"

which it doesn't - insertion adds an object to your list. It's a fundamental
difference - the computer stores objects, and if we want to access that
object we have to know where it's stored. In your first case, 7 and 6 are
stored in the positions 3 and 4 from the end of the list. When you
insert(-3, 0) you're shifting everything before -3 and putting 0 in the spot
before (at least that's how I think of it. How python actually implements
lists is probably different.).

Does that make sense? (and if I've explained it incorrectly, feel free to
correct me!)
HTH,
Wayne
-- 
To be considered stupid and to be told so is more painful than being called
gluttonous, mendacious, violent, lascivious, lazy, cowardly: every weakness,
every vice, has found its defenders, its rhetoric, its ennoblement and
exaltation, but stupidity hasn’t. - Primo Levi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100106/a2644370/attachment.htm>


Thông tin thêm về danh sách gửi thư Tutor

naughtysensei
Lập trình viên tên Tim

Bài đăng. 5

Chủ đề. 4

Đã tham gia. Tháng 9 năm 2020

Danh tiếng. 0

#1

01-Oct-2020, 02. 06 AM (Bài đăng này đã được sửa đổi lần cuối. 01-Oct-2020, 02. 07 AM bởi nghịch ngợmsensei. )

Việc chèn các mục có chỉ mục không âm sẽ mang lại kết quả như mong đợi.
______1

Output:

['min', 1, 2, 3]
nhưng với chỉ mục âm, như trong trường hợp này không nên chèn "max" vào chỉ mục cuối cùng
num.insert(-1, "max")
print(num)

Output:

['min', 1, 2, 'max', 3]
Ý tôi là nó không sai, đó là cách họ làm cho python hoạt động

Hồi đáp

Tìm thấy

Hồi đáp

micseydel
Người thu thập mạng nhện không tự nguyện

Danh sách Python chèn chỉ mục phủ định

Bài đăng. 2.344

Chủ đề. 61

Đã tham gia. Tháng 9 năm 2016

Danh tiếng. 73

#2

01-Oct-2020, 03. 05 giờ sáng

Sự nhầm lẫn của bạn có lý. Tôi cũng mất một lúc để nhận ra. Bạn đang nghĩ rằng nó sẽ chèn intp chỉ mục mà bạn cung cấp. Điều này không hoàn toàn chính xác.

https. // tài liệu. con trăn. tổ chức/3. 8/hướng dẫn/dat. đồ đạc. html (nhấn mạnh thêm) Đã viết. Chèn một mục tại một vị trí nhất định. Đối số đầu tiên là chỉ mục của phần tử được chèn vào trước , do đó, a.insert(0, x) sẽ chèn vào đầu danh sách và a.insert(len(a), x) tương đương với a.append(x).
Given this, the behavior makes sense: -1 is the index of the last element, so you insert before it.

Hồi đáp

Trang web Tìm

Hồi đáp

Danh sách Python có thể có chỉ số âm không?

Python3. Trong trường hợp này, chúng tôi đảo ngược danh sách bằng cách sử dụng phép cắt và sử dụng toán tử ~ để lấy phủ định, index() được sử dụng để lấy chỉ mục phủ định mong muốn .

Chỉ mục danh sách có thể âm không?

Lập chỉ mục phủ định là hành động lập chỉ mục từ cuối danh sách với việc lập chỉ mục bắt đầu từ -1 i. e. -1 đưa ra phần tử cuối cùng của danh sách, -2 đưa ra phần tử cuối cùng thứ hai của danh sách, v.v.

danh sách là gì [

[-1] có nghĩa là phần tử cuối cùng trong một chuỗi , trong trường hợp này là danh sách các bộ như (phần tử, số .

Chỉ số âm trong danh sách chỉ ra điều gì?

Số âm có nghĩa là bạn đếm từ bên phải thay vì bên trái . Vì vậy, list[-1] đề cập đến phần tử cuối cùng, list[-2] là phần tử cuối cùng, v.v.