Hướng dẫn how to start for loop again in python - cách bắt đầu lại vòng lặp for trong python

Về cơ bản, tôi cần một cách để trả lại quyền kiểm soát để bắt đầu một vòng lặp và thực sự khởi động lại toàn bộ quá trình lặp sau khi thực hiện một hành động nếu một điều kiện nhất định được đáp ứng.

Những gì tôi đang cố gắng làm là thế này:

    for index, item in enumerate(list2):
    if item == '||' and list2[index-1] == '||':
        del list2[index]
        **

Bằng cách đó, nếu ['Berry', '||', '||', '||', 'Pancake] nằm trong danh sách, tôi sẽ kết thúc với:

['Berry', '||', 'Pancake'] thay vào đó.

Thanks!

Hỏi ngày 13 tháng 9 năm 2010 lúc 22:34Sep 13, 2010 at 22:34

Hướng dẫn how to start for loop again in python - cách bắt đầu lại vòng lặp for trong python

GeorginageorginaGeorgina

3811 Huy hiệu vàng6 Huy hiệu bạc13 Huy hiệu đồng1 gold badge6 silver badges13 bronze badges

6

Tôi không chắc ý bạn là gì khi "khởi động lại". Bạn có muốn bắt đầu lặp lại từ đầu, hoặc đơn giản là bỏ qua lần lặp hiện tại?

Nếu đó là cái sau, thì for Loops hỗ trợ

for i in xrange(10):
  if i == 5:
    continue
  print i
0 giống như các vòng lặp
for i in xrange(10):
  if i == 5:
    continue
  print i
1 làm:

for i in xrange(10):
  if i == 5:
    continue
  print i

Trên đây sẽ in các số từ 0 đến 9, ngoại trừ 5.

Nếu bạn đang nói về việc bắt đầu lại từ đầu vòng lặp for, thì không có cách nào để làm điều đó ngoại trừ "bằng tay", ví dụ bằng cách quấn nó trong vòng lặp

for i in xrange(10):
  if i == 5:
    continue
  print i
1:

should_restart = True
while should_restart:
  should_restart = False
  for i in xrange(10):
    print i
    if i == 5:
      should_restart = True
      break

Trên đây sẽ in các số từ 0 đến 5, sau đó bắt đầu lại từ 0 một lần nữa, và cứ thế vô thời hạn (không thực sự là một ví dụ tuyệt vời, tôi biết).

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 22:44Sep 13, 2010 at 22:44

Liquid_FireLiquid_FireLiquid_Fire

6.8902 Huy hiệu vàng24 Huy hiệu bạc22 Huy hiệu đồng2 gold badges24 silver badges22 bronze badges

3

while True:
    for i in xrange(10):
        if condition(i):
            break
    else:
        break

Điều đó sẽ làm những gì bạn dường như muốn. Tại sao bạn muốn làm điều đó là một vấn đề khác. Có lẽ bạn nên xem mã của mình và đảm bảo rằng bạn không thiếu một cách rõ ràng và dễ dàng hơn để làm điều đó.

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 22:44Sep 13, 2010 at 22:44

6.8902 Huy hiệu vàng24 Huy hiệu bạc22 Huy hiệu đồngnmichaels

Điều đó sẽ làm những gì bạn dường như muốn. Tại sao bạn muốn làm điều đó là một vấn đề khác. Có lẽ bạn nên xem mã của mình và đảm bảo rằng bạn không thiếu một cách rõ ràng và dễ dàng hơn để làm điều đó.12 gold badges102 silver badges133 bronze badges

1

Nmichaelsnmichaels

48.2K12 Huy hiệu vàng102 Huy hiệu bạc133 Huy hiệu đồng

một số hành động tạo lại toàn bộ quá trình

Một cách nghèo nàn để nghĩ về một thuật toán.

def unique( some_list ):
    list_iter= iter(some_list)
    prev= list_iter.next()
    for item in list_iter:
        if item != prev:
            yield prev
            prev= item
    yield prev

list( unique( ['berry','||','||','||','pancake'] ) )

Bạn chỉ đang lọc, tức là loại bỏ các bản sao.Sep 13, 2010 at 22:56

S.LottS.LottS.Lott

Và - trong Python - bạn đang hạnh phúc nhất khi tạo ra các bản sao, không cố gắng làm

for i in xrange(10):
  if i == 5:
    continue
  print i
4. Nói chung, có rất ít cuộc gọi để sử dụng
for i in xrange(10):
  if i == 5:
    continue
  print i
4.78 gold badges503 silver badges771 bronze badges

5

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 22:56

from itertools import groupby

def uniq(seq):
    for key, items in groupby(seq):
        yield key

print list(uniq(['berry','||','||','||','pancake'])) # ['berry','||', 'pancake']
# or simply:
print [key for key, items in groupby(['berry','||','||','||','pancake'])]

377K78 Huy hiệu vàng503 Huy hiệu bạc771 Huy hiệu ĐồngSep 13, 2010 at 23:26

Phiên bản ITERtools không thể tránh khỏi, bởi vì nó vừa đến với tôi:Jochen Ritzel

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 23:2629 gold badges196 silver badges191 bronze badges

1

Jochen Ritzeljochen Ritzel

102K29 Huy hiệu vàng196 Huy hiệu bạc191 Huy hiệu ĐồngSep 13, 2010 at 22:37

for i in xrange(10):
  if i == 5:
    continue
  print i
6 sẽ hoạt động cho bất kỳ vòng lặp.volting

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 22:377 gold badges34 silver badges54 bronze badges

2

Voltingvolting

>>> for i in range(3):
...     print 'Before', i
...     if i == 1:
...             continue
...     print 'After', i
... 
Before 0
After 0
Before 1
# After 1 is missing
Before 2
After 2

15.1k7 Huy hiệu vàng34 Huy hiệu bạc54 Huy hiệu đồngSep 13, 2010 at 22:39

Hướng dẫn how to start for loop again in python - cách bắt đầu lại vòng lặp for trong python

for i in xrange(10):
  if i == 5:
    continue
  print i
0 cũng hoạt động trong các vòng lặp.Sam Dolan

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 22:399 gold badges85 silver badges84 bronze badges

1

Sam Dolansam Dolan

31.3k9 Huy hiệu vàng85 Huy hiệu bạc84 Huy hiệu đồng

L = ['berry','||','||','||','pancake']
idx=1
while idx

Như bạn có thể thấy việc trả lời câu hỏi của bạn dẫn đến một số mã khá phức tạp. Thông thường, một cách tốt hơn có thể được tìm thấy, đó là lý do tại sao các cấu trúc như vậy không được tích hợp vào ngôn ngữSep 13, 2010 at 23:45

Hướng dẫn how to start for loop again in python - cách bắt đầu lại vòng lặp for trong python

Nếu bạn không thoải mái khi sử dụng itertools, hãy xem xét sử dụng vòng lặp này. Không chỉ dễ theo dõi hơn so với việc bạn khởi động lại cho vòng lặp, nó còn hiệu quả hơn vì nó không lãng phí thời gian kiểm tra lại các vật phẩm đã được truyền qua.John La Rooy

Đã trả lời ngày 13 tháng 9 năm 2010 lúc 23:4551 gold badges358 silver badges499 bronze badges

def remove_adjacent(nums):
     return [a for a,b in zip(nums, nums[1:]+[not nums[-1]]) if a != b]

example = ['berry','||','||','||','pancake']

example = remove_adjacent(example)
print example
""" Output:
['berry', '||', 'pancake']
"""

John La Rooyjohn La Rooy

286K51 Huy hiệu vàng358 Huy hiệu bạc499 Huy hiệu đồngSep 13, 2010 at 23:32

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

Mã sau đây cho thấy cách thực hiện điều này trong Python:..
Khởi động lại = Đúng ..
Trong khi khởi động lại:.
Đối với tôi trong phạm vi (3):.
in ('i =', i) # thân vòng ..
# Mặc định: Thực thi một lần ..
Khởi động lại = Sai ..
# Khởi động lại logic vòng lặp (bất kỳ điều kiện khởi động lại):.
Nếu input () == 'r':.

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

Lặp lại n lần trong Python bằng cách sử dụng hàm phạm vi () Cách phổ biến nhất để lặp lại một tác vụ cụ thể hoặc hoạt động n lần là bằng cách sử dụng vòng lặp For trong lập trình.Chúng ta có thể lặp lại các dòng mã n lần bằng cách sử dụng vòng lặp với hàm phạm vi () trong python.using the for loop in programming. We can iterate the code lines N times using the for loop with the range() function in Python.

Làm thế nào để tôi bắt đầu một vòng lặp lại một lần nữa?

Bạn sử dụng câu lệnh tiếp tục để khởi động lại một vòng lặp như vòng lặp, cho vòng lặp hoặc vòng lặp.Nếu có các vòng lặp lồng nhau, tuyên bố tiếp tục sẽ khởi động lại vòng lặp trong cùng.use the continue statement to restart a loop such as the while loop, for loop or for-in loop. If there are nested loops, the continue statement will restart the innermost loop.

Có một vòng lặp lặp lại trong Python?

Ngoài ra còn có các vòng lặp lặp lại một số lần cụ thể.Các câu lệnh Vòng lặp sau đây có sẵn trong Python: For - sử dụng bộ đếm hoặc vòng lặp thông qua mỗi mục trong danh sách một số lần được chỉ định.Trong khi - vòng lặp trong khi một điều kiện là đúng.. The following looping statements are available in Python: for - Uses a counter or loops through a each item in a list a specified number of times. while - Loops while a condition is True.