Hướng dẫn for list in list python - cho danh sách trong danh sách python

Tôi muốn lặp lại thông qua danh sách danh sách. Tôi muốn lặp lại thông qua các danh sách lồng nhau bất thường bên trong danh sách. Bất cứ ai có thể cho tôi biết làm thế nào tôi có thể làm điều đó?
I want to iterate through irregularly nested lists inside list also.
Can anyone let me know how can I do that?

x = [u'sam', [['Test', [['one', [], []]], [(u'file.txt', ['id', 1, 0])]], ['Test2', [], [(u'file2.txt', ['id', 1, 2])]]], []]

Hướng dẫn for list in list python - cho danh sách trong danh sách python

hỏi ngày 14 tháng 6 năm 2011 lúc 7:25Jun 14, 2011 at 7:25

3

Hàm trình tạo

def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        for value in o:
            for subvalue in traverse(value, tree_types):
                yield subvalue
    else:
        yield o

data = [(1,1,(1,1,(1,"1"))),(1,1,1),(1,),1,(1,(1,("1",)))]
print list(traverse(data))
# prints [1, 1, 1, 1, 1, '1', 1, 1, 1, 1, 1, 1, 1, '1']

for value in traverse(data):
    print repr(value)
# prints
# 1
# 1
# 1
# 1
# 1
# '1'
# 1
# 1
# 1
# 1
# 1
# 1
# 1
# '1'
1 này có thể được sử dụng để lặp lại tất cả các giá trị:

def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        for value in o:
            for subvalue in traverse(value, tree_types):
                yield subvalue
    else:
        yield o

data = [(1,1,(1,1,(1,"1"))),(1,1,1),(1,),1,(1,(1,("1",)))]
print list(traverse(data))
# prints [1, 1, 1, 1, 1, '1', 1, 1, 1, 1, 1, 1, 1, '1']

for value in traverse(data):
    print repr(value)
# prints
# 1
# 1
# 1
# 1
# 1
# '1'
# 1
# 1
# 1
# 1
# 1
# 1
# 1
# '1'

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 7:48Jun 14, 2011 at 7:48

Hướng dẫn for list in list python - cho danh sách trong danh sách python

4

Vì vậy, chờ đã, đây chỉ là một danh sách trong một danh sách?

Cách dễ nhất có lẽ chỉ là sử dụng lồng nhau cho các vòng lặp:

>>> a = [[1, 3, 4], [2, 4, 4], [3, 4, 5]]
>>> a
[[1, 3, 4], [2, 4, 4], [3, 4, 5]]
>>> for list in a:
...     for number in list:
...         print number
...
1
3
4
2
4
4
3
4
5

Hay nó là một cái gì đó phức tạp hơn thế? Nesting tùy ý hay gì đó? Hãy cho chúng tôi biết nếu có một cái gì đó khác là tốt.

Ngoài ra, vì lý do hiệu suất, bạn có thể muốn xem xét bằng cách sử dụng toàn bộ danh sách để làm điều này:

http://docs.python.org/tutorial/datastructures.html#nested-list-comprehensions

Hướng dẫn for list in list python - cho danh sách trong danh sách python

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 7:30Jun 14, 2011 at 7:30

Victorhooivictorhooivictorhooi

15.9K21 Huy hiệu vàng87 Huy hiệu bạc113 Huy hiệu đồng21 gold badges87 silver badges113 bronze badges

3

Điều này cũng có thể đạt được với itertools.chain.from_iterable, điều này sẽ làm phẳng các lần lặp liên tiếp:

import itertools
for item in itertools.chain.from_iterable(iterables):
    # do something with item    

Đã trả lời ngày 8 tháng 12 năm 2014 lúc 12:16Dec 8, 2014 at 12:16

IgniteFlowigniteFlowigniteflow

8.08610 Huy hiệu vàng37 Huy hiệu bạc46 Huy hiệu đồng10 gold badges37 silver badges46 bronze badges

1

Nếu bạn không muốn đệ quy, bạn có thể thử:

x = [u'sam', [['Test', [['one', [], []]], [(u'file.txt', ['id', 1, 0])]], ['Test2', [], [(u'file2.txt', ['id', 1, 2])]]], []]
layer1=x
layer2=[]
while True:
    for i in layer1:
        if isinstance(i,list):
            for j in i:
                layer2.append(j)
        else:
            print i
    layer1[:]=layer2
    layer2=[]
    if len(layer1)==0:
        break

Mà mang lại:

sam
Test
Test2
(u'file.txt', ['id', 1, 0])
(u'file2.txt', ['id', 1, 2])
one

.

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 8:59Jun 14, 2011 at 8:59

Hướng dẫn for list in list python - cho danh sách trong danh sách python

Rusty Robrusty RobRusty Rob

15.8k8 Huy hiệu vàng94 Huy hiệu bạc112 Huy hiệu đồng8 gold badges94 silver badges112 bronze badges

Nếu bạn tự hỏi để có được tất cả các giá trị trong cùng một danh sách, bạn có thể sử dụng mã sau:

text = [u'sam', [['Test', [['one', [], []]], [(u'file.txt', ['id', 1, 0])]], ['Test2', [], [(u'file2.txt', ['id', 1, 2])]]], []]

def get_values(lVals):
    res = []
    for val in lVals:
        if type(val) not in [list, set, tuple]:
            res.append(val)
        else:
            res.extend(get_values(val))
    return res

get_values(text)

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 7:43Jun 14, 2011 at 7:43

Artsiom Rudzenkaartsiom RudzenkaArtsiom Rudzenka

27.1k4 Huy hiệu vàng33 Huy hiệu bạc51 Huy hiệu Đồng4 gold badges33 silver badges51 bronze badges

2

Tạo một phương pháp để lặp lại một cách đệ quy thông qua các danh sách lồng nhau. Nếu phần tử hiện tại là một thể hiện của danh sách, thì hãy gọi lại cùng một phương thức. Nếu không, in phần tử hiện tại. Đây là một ví dụ:

data = [1,2,3,[4,[5,6,7,[8,9]]]]

def print_list(the_list):

    for each_item in the_list:
        if isinstance(each_item, list):
            print_list(each_item)
        else:
            print(each_item)

print_list(data)

Đã trả lời ngày 19 tháng 6 năm 2015 lúc 14:21Jun 19, 2015 at 14:21

Hướng dẫn for list in list python - cho danh sách trong danh sách python

x = [u'sam', [['Test', [['one', [], []]], [(u'file.txt', ['id', 1, 0])]], ['Test2', [], [(u'file2.txt', ['id', 1, 2])]]], []]
output = []

def lister(l):
    for item in l:
        if type(item) in [list, tuple, set]:
            lister(item)
        else:
            output.append(item)

lister(x)

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 8:00Jun 14, 2011 at 8:00

Hướng dẫn for list in list python - cho danh sách trong danh sách python

FallenangelfallenangelFallenAngel

17.7K14 Huy hiệu vàng83 Huy hiệu bạc113 Huy hiệu đồng14 gold badges83 silver badges113 bronze badges

0

Hai cái lồng cho các vòng?

 for a in x:
     print "--------------"
     for b in a:
             print b

Nó sẽ giúp nếu bạn đưa ra một ví dụ về những gì bạn muốn làm với các danh sách

Đã trả lời ngày 14 tháng 6 năm 2011 lúc 7:30Jun 14, 2011 at 7:30

VictorhooivictorhooiAlftheo

15.9K21 Huy hiệu vàng87 Huy hiệu bạc113 Huy hiệu đồng7 silver badges17 bronze badges

1

def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        for value in o:
            for subvalue in traverse(value, tree_types):
                yield subvalue
    else:
        yield o

data = [(1,1,(1,1,(1,"1"))),(1,1,1),(1,),1,(1,(1,("1",)))]
print list(traverse(data))
# prints [1, 1, 1, 1, 1, '1', 1, 1, 1, 1, 1, 1, 1, '1']

for value in traverse(data):
    print repr(value)
# prints
# 1
# 1
# 1
# 1
# 1
# '1'
# 1
# 1
# 1
# 1
# 1
# 1
# 1
# '1'
0

Điều này cũng có thể đạt được với itertools.chain.from_iterable, điều này sẽ làm phẳng các lần lặp liên tiếp:Apr 29, 2021 at 15:56

Đã trả lời ngày 8 tháng 12 năm 2014 lúc 12:16eddy

IgniteFlowigniteFlow3 bronze badges

1

Bạn có thể sử dụng trong danh sách trong Python không?

Các cấu trúc FOR/trong được sử dụng rất phổ biến trong mã Python và làm việc trên các loại dữ liệu khác ngoài danh sách, vì vậy bạn chỉ nên ghi nhớ cú pháp của họ. Bạn có thể có thói quen từ các ngôn ngữ khác, nơi bạn bắt đầu lặp lại bằng tay trên một bộ sưu tập, trong đó trong Python bạn chỉ nên sử dụng cho/in., so you should just memorize their syntax. You may have habits from other languages where you start manually iterating over a collection, where in Python you should just use for/in.

Bạn có thể đặt một vòng lặp trong danh sách Python không?

Đối với các vòng lặp được sử dụng khi bạn có một khối mã mà bạn muốn lặp lại một số lần cố định. Vòng lặp for luôn được sử dụng kết hợp với một đối tượng có thể lặp lại, như một danh sách hoặc một phạm vi. Python cho câu lệnh lặp lại các thành viên của một chuỗi theo thứ tự, thực hiện khối mỗi lần.The for-loop is always used in combination with an iterable object, like a list or a range. The Python for statement iterates over the members of a sequence in order, executing the block each time.

Có thể sử dụng vòng lặp cho một danh sách?

Đối với các vòng lặp có thể được sử dụng để lặp lại một hành động dựa trên danh sách các mục.Ví dụ: gửi email đến danh sách người nhận.Hoặc xử lý từng dòng của một hóa đơn.. For example, send emails to a list of recipients. Or process each line of an invoice.

Là danh sách () và [] giống nhau trong Python?

Về mặt thực tế không có sự khác biệt.Tôi hy vọng [] sẽ nhanh hơn, bởi vì nó không liên quan đến việc tra cứu toàn cầu theo sau là một cuộc gọi chức năng.Ngoài ra, nó cũng vậy.there's no difference. I'd expect [] to be faster, because it does not involve a global lookup followed by a function call. Other than that, it's the same.

[] Có phải là một danh sách trong Python?

Trong Python, một danh sách được tạo ra bằng cách đặt các phần tử bên trong dấu ngoặc vuông [], được phân tách bằng dấu phẩy.Một danh sách có thể có bất kỳ số lượng mục nào và chúng có thể thuộc các loại khác nhau (số nguyên, float, chuỗi, v.v.).Một danh sách cũng có thể có một danh sách khác như một mục.a list is created by placing elements inside square brackets [] , separated by commas. A list can have any number of items and they may be of different types (integer, float, string, etc.). A list can also have another list as an item.