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

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

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

Bài Viết Liên Quan

Chủ Đề