Hướng dẫn how do you start a for loop at a specific index in python? - làm thế nào để bạn bắt đầu một vòng lặp for tại một chỉ mục cụ thể trong python?

109

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Cách tốt nhất để đặt chỉ mục bắt đầu khi lặp lại một danh sách trong Python. Ví dụ, tôi có một danh sách các ngày trong tuần - Chủ nhật, Thứ Hai, Thứ Ba, ... Thứ Bảy - nhưng tôi muốn lặp lại trong danh sách bắt đầu từ Thứ Hai. Thực hành tốt nhất để làm điều này là gì?

Khi được hỏi ngày 27 tháng 5 năm 2011 lúc 6:28May 27, 2011 at 6:28

Hướng dẫn how do you start a for loop at a specific index in python? - làm thế nào để bạn bắt đầu một vòng lặp for tại một chỉ mục cụ thể trong python?

Vincent Catalanovincent CatalanoVincent Catalano

2.1994 Huy hiệu vàng21 Huy hiệu bạc29 Huy hiệu đồng4 gold badges21 silver badges29 bronze badges

3

Bạn có thể sử dụng cắt lát:

for item in some_list[2:]:
    # do stuff

Điều này sẽ bắt đầu ở yếu tố thứ ba và lặp lại đến cuối.

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 6:31May 27, 2011 at 6:31

Bjorn Pollexbjorn PollexBjörn Pollex

73.6K28 Huy hiệu vàng192 Huy hiệu bạc277 Huy hiệu đồng28 gold badges192 silver badges277 bronze badges

8

islice có lợi thế là nó không cần phải sao chép một phần của danh sách

from itertools import islice
for day in islice(days, 1, None):
    ...

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 6:49May 27, 2011 at 6:49

Hướng dẫn how do you start a for loop at a specific index in python? - làm thế nào để bạn bắt đầu một vòng lặp for tại một chỉ mục cụ thể trong python?

John La Rooyjohn La RooyJohn La Rooy

286K51 Huy hiệu vàng359 Huy hiệu bạc499 Huy hiệu đồng51 gold badges359 silver badges499 bronze badges

Tại sao mọi người sử dụng cắt danh sách (chậm vì nó sao chép vào danh sách mới), nhập chức năng thư viện hoặc cố gắng xoay một mảng cho việc này?

Sử dụng vòng lặp bình thường với

from itertools import islice
for day in islice(days, 1, None):
    ...
0 (trong đó
from itertools import islice
for day in islice(days, 1, None):
    ...
1 và
from itertools import islice
for day in islice(days, 1, None):
    ...
2 là các đối số tùy chọn).

Ví dụ: lặp qua một mảng bắt đầu từ INDEX 1:

for i in range(1, len(arr)):
    print(arr[i])

Đã trả lời ngày 14 tháng 7 năm 2020 lúc 20:05Jul 14, 2020 at 20:05

Hướng dẫn how do you start a for loop at a specific index in python? - làm thế nào để bạn bắt đầu một vòng lặp for tại một chỉ mục cụ thể trong python?

1

Bạn luôn có thể lặp bằng cách sử dụng một chỉ mục để vòng lặp kiểu C thông thường:

for i in range(len(l)-1):
    print l[i+1]

Luôn luôn tốt hơn để làm theo phong cách "vòng lặp trên mọi yếu tố" bởi vì đó là điều bình thường để làm, nhưng nếu nó cản đường bạn, chỉ cần nhớ phong cách thông thường cũng được hỗ trợ, luôn luôn được hỗ trợ.

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 6:35May 27, 2011 at 6:35

LPRSDLPRSDlprsd

82.4K47 Huy hiệu vàng132 Huy hiệu bạc167 Huy hiệu đồng47 gold badges132 silver badges167 bronze badges

Stdlib sẽ móc bạn lên con trai!

from itertools import islice
for day in islice(days, 1, None):
    ...
3:

#!/usr/local/bin/python2.7

from collections import deque

a = deque('Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '))
a.rotate(3)
deque(['Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday'])

Bjorn Pollex

73.6K28 Huy hiệu vàng192 Huy hiệu bạc277 Huy hiệu đồng28 gold badges192 silver badges277 bronze badges

islice có lợi thế là nó không cần phải sao chép một phần của danh sáchMay 27, 2011 at 9:16

Hướng dẫn how do you start a for loop at a specific index in python? - làm thế nào để bạn bắt đầu một vòng lặp for tại một chỉ mục cụ thể trong python?

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 6:49synthesizerpatel

John La Rooyjohn La Rooy5 gold badges72 silver badges90 bronze badges

286K51 Huy hiệu vàng359 Huy hiệu bạc499 Huy hiệu đồng

days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for d in days[days.index('Monday'):] :
   print d

Tại sao mọi người sử dụng cắt danh sách (chậm vì nó sao chép vào danh sách mới), nhập chức năng thư viện hoặc cố gắng xoay một mảng cho việc này?May 27, 2011 at 7:17

Sử dụng vòng lặp bình thường với

from itertools import islice
for day in islice(days, 1, None):
    ...
0 (trong đó
from itertools import islice
for day in islice(days, 1, None):
    ...
1 và
from itertools import islice
for day in islice(days, 1, None):
    ...
2 là các đối số tùy chọn).juanchopanza

Ví dụ: lặp qua một mảng bắt đầu từ INDEX 1:32 gold badges391 silver badges468 bronze badges

1

Đã trả lời ngày 14 tháng 7 năm 2020 lúc 20:05

>>> def rotated_sequence(seq, start_index):
...     n = len(seq)
...     for i in xrange(n):
...         yield seq[(i + start_index) % n]
...
>>> s = 'su m tu w th f sa'.split()
>>> list(rotated_sequence(s, s.index('m')))
['m', 'tu', 'w', 'th', 'f', 'sa', 'su']
>>>

Bạn luôn có thể lặp bằng cách sử dụng một chỉ mục để vòng lặp kiểu C thông thường:May 27, 2011 at 8:52

Luôn luôn tốt hơn để làm theo phong cách "vòng lặp trên mọi yếu tố" bởi vì đó là điều bình thường để làm, nhưng nếu nó cản đường bạn, chỉ cần nhớ phong cách thông thường cũng được hỗ trợ, luôn luôn được hỗ trợ.John Machin

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 6:3511 gold badges138 silver badges183 bronze badges

2

LPRSDLPRSD

dayNames = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 
            'Friday', 'Saturday',  ]

startDayName = 'Monday'

startIndex = dayNames.index( startDayName )
print ( startIndex )

rotatedDayNames = dayNames[ startIndex: ] + dayNames [ :startIndex ]

for x in rotatedDayNames:
    print ( x )

82.4K47 Huy hiệu vàng132 Huy hiệu bạc167 Huy hiệu đồngMay 27, 2011 at 8:19

Stdlib sẽ móc bạn lên con trai!slothrop

Bjorn Pollex6 silver badges7 bronze badges

Đã trả lời ngày 27 tháng 5 năm 2011 lúc 9:16

import random
arr = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
cln = len(arr)
start = random.randint(0, cln-1)
i = 0
while i < cln:
    pos = i+start
    print(arr[pos if pos<cln else pos-cln])
    i += 1

SynthesizerPatelSynthesizerPatelFeb 2 at 19:52

Làm thế nào để bạn bắt đầu một vòng lặp từ một chỉ mục được chỉ định trong Python?

Python cho chỉ số vòng bắt đầu ở 1..
Trong Python để bắt đầu một vòng lặp cho chỉ mục 1, chúng ta có thể dễ dàng bỏ qua chỉ mục đầu tiên 0 ..
Bằng cách sử dụng phương thức cắt [bắt đầu:] chúng ta có thể dễ dàng thực hiện nhiệm vụ cụ thể này. ....
Bằng cách sử dụng toán tử này, chúng tôi có thể chỉ định rằng nơi chúng tôi phải bắt đầu cắt lát, nơi dừng lại và chỉ định bước ..

Làm thế nào để bạn bắt đầu một vòng lặp cho chỉ số thứ hai của một danh sách trong Python?

Nếu bạn muốn lặp lại thông qua danh sách từ mục thứ hai, chỉ cần sử dụng phạm vi (1, Ni) (nếu Ni là độ dài của danh sách hoặc lâu hơn). tôi. e. Xin hãy nhớ: Python sử dụng lập chỉ mục bằng không, tức là phần tử thứ nhất có chỉ mục 0, thứ hai - 1, v.v. Theo mặc định, phạm vi bắt đầu từ 0 và dừng ở giá trị của tham số được truyền trừ đi một.use range(1, nI) (if nI is the length of the list or so). i. e. Please, remember: python uses zero indexing, i.e. first element has an index 0, the second - 1 etc. By default, range starts from 0 and stops at the value of the passed parameter minus one.

Làm thế nào để bạn bắt đầu một vòng lặp trong một trong một trong Python?

Để lặp qua một bộ mã, một số lần được chỉ định, chúng ta có thể sử dụng hàm phạm vi (), hàm phạm vi () trả về một chuỗi số, bắt đầu từ 0 theo mặc định và tăng thêm 1 (theo mặc định) và kết thúctại một số cụ thể.use the range() function, The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.

Làm cách nào để bắt đầu một số chỉ mục từ 1 trong Python?

Bắt đầu chỉ mục ở 1 với Enumerate () Như trong ví dụ trên, theo mặc định, chỉ mục của Enumerate () bắt đầu từ 0. Nếu bạn muốn bắt đầu từ một số khác, hãy chuyển số đến đối số thứ hai của Enumerate ().Ví dụ, điều này rất hữu ích khi tạo các chuỗi số tuần tự bắt đầu từ 1.enumerate() As in the example above, by default, the index of enumerate() starts at 0. If you want to start from another number, pass the number to the second argument of enumerate() . For example, this is useful when generating sequential number strings starting from 1.