Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

Khi tôi cần thêm một số mục giống hệt nhau vào danh sách, tôi sử dụng danh sách.extend:

a = ['a', 'b', 'c']
a.extend(['d']*3)

Kết quả

['a', 'b', 'c', 'd', 'd', 'd']

Nhưng, làm thế nào để làm tương tự với sự hiểu biết danh sách?

a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]

Kết quả

[['a', 'a'], ['b', 'b'], ['c']]

Nhưng, làm thế nào để làm tương tự với sự hiểu biết danh sách?

['a', 'a', 'b', 'b', 'c']

Nhưng tôi cần cái này

Bất kỳ ý tưởng?Oct 10, 2010 at 8:49

Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

0

Hỏi ngày 10 tháng 10 năm 2010 lúc 8:49

[y for x in a for y in [x[0]] * x[1]]

Xếp chồng LCS.Oct 10, 2010 at 8:51

5

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 8:51

Cách tiếp cận itertools:

import itertools

def flatten(it):
    return itertools.chain.from_iterable(it)

pairs = [['a',2], ['b',2], ['c',1]]
flatten(itertools.repeat(item, times) for (item, times) in pairs)
# ['a', 'a', 'b', 'b', 'c']
Oct 10, 2010 at 9:01

Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 9:01tokland

Toklandtokland13 gold badges139 silver badges169 bronze badges

0

64,8K13 Huy hiệu vàng139 Huy hiệu bạc169 Huy hiệu đồng

>>> a = [['a',2], ['b',2], ['c',1]]
>>> [i for i, n in a for k in range(n)]
['a', 'a', 'b', 'b', 'c']
Oct 10, 2010 at 8:52

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 8:52sdcvvc

SDCVVCSDCVVC4 gold badges64 silver badges102 bronze badges

25.2k4 Huy hiệu vàng64 Huy hiệu bạc102 Huy hiệu đồng

a = []
for x, y in l:
    a.extend([x]*y)

Nếu bạn thích mở rộng hơn toàn bộ danh sách:Oct 10, 2010 at 11:47

Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 11:47dheerosaur

Dheerosaurdheerosaur6 gold badges30 silver badges31 bronze badges

1

>>> a = [['a',2], ['b',2], ['c',1]]
>>> sum([[item]*count for item,count in a],[])
['a', 'a', 'b', 'b', 'c']

14.2k6 Huy hiệu vàng30 Huy hiệu bạc31 Huy hiệu ĐồngOct 10, 2010 at 10:50

Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 10:50PaulMcG

Paulmcgpaulmcg15 gold badges90 silver badges127 bronze badges

['a', 'b', 'c', 'd', 'd', 'd']
0

60.8K15 Huy hiệu vàng90 Huy hiệu bạc127 Huy hiệu đồngOct 10, 2010 at 8:55

Hướng dẫn extend in list comprehension python - mở rộng trong python hiểu danh sách

Đã trả lời ngày 10 tháng 10 năm 2010 lúc 8:55Richard Fearn

Richard Fearnrichard Fearn7 gold badges58 silver badges55 bronze badges

1

Phương thức Danh sách Python mở rộng () lặp đi lặp lại trên một chuỗi giống như chuỗi, danh sách, tuple, v.v., và thêm từng yếu tố của ITEBELBE vào cuối danh sách, sửa đổi danh sách ban đầu.extend()method iterates over an iterable like string, list, tuple, etc., and adds each element of the iterable to the end of the List, modifying the original list.

Python Danh sách mở rộng () Cú pháp:

Cú pháp: list.extend (có thể điều chỉnh được)list.extend(iterable)

Parameters:

  • Có thể lặp lại: Bất kỳ sự khác biệt nào (danh sách, bộ, tuple, v.v.) Any iterable (list, set, tuple, etc.)

Trả lại: Không cóNone

Python Danh sách mở rộng () Ví dụ:

Python3

['a', 'b', 'c', 'd', 'd', 'd']
4
['a', 'b', 'c', 'd', 'd', 'd']
5
['a', 'b', 'c', 'd', 'd', 'd']
6
['a', 'b', 'c', 'd', 'd', 'd']
7
['a', 'b', 'c', 'd', 'd', 'd']
8
['a', 'b', 'c', 'd', 'd', 'd']
9
['a', 'b', 'c', 'd', 'd', 'd']
8
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
1
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
2

a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
3
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
4
['a', 'b', 'c', 'd', 'd', 'd']
8
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
6
['a', 'b', 'c', 'd', 'd', 'd']
8
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
8
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
9

[['a', 'a'], ['b', 'b'], ['c']]
0
[['a', 'a'], ['b', 'b'], ['c']]
1

Output:

['a', 'b', 'c', 'd', 'd', 'd']
1

Ví dụ 1: Thêm các yếu tố của tuple và đặt vào danh sáchAdd Elements of Tuple and Set to List

Sử dụng Phương thức Danh sách mở rộng () để thêm các phần tử từ Tuple hoặc đặt thành Danh sách.

Python

[['a', 'a'], ['b', 'b'], ['c']]
2
['a', 'b', 'c', 'd', 'd', 'd']
5
['a', 'b', 'c', 'd', 'd', 'd']
6
[['a', 'a'], ['b', 'b'], ['c']]
5
['a', 'b', 'c', 'd', 'd', 'd']
8
[['a', 'a'], ['b', 'b'], ['c']]
7
['a', 'b', 'c', 'd', 'd', 'd']
8
[['a', 'a'], ['b', 'b'], ['c']]
5
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
2

['a', 'a', 'b', 'b', 'c']
1
['a', 'b', 'c', 'd', 'd', 'd']
5
['a', 'a', 'b', 'b', 'c']
3
['a', 'a', 'b', 'b', 'c']
4
['a', 'b', 'c', 'd', 'd', 'd']
8
['a', 'a', 'b', 'b', 'c']
6
['a', 'a', 'b', 'b', 'c']
7

['a', 'a', 'b', 'b', 'c']
8
['a', 'b', 'c', 'd', 'd', 'd']
5
[y for x in a for y in [x[0]] * x[1]]
0
[y for x in a for y in [x[0]] * x[1]]
1____
['a', 'b', 'c', 'd', 'd', 'd']
8
[y for x in a for y in [x[0]] * x[1]]
3
[y for x in a for y in [x[0]] * x[1]]
4

[y for x in a for y in [x[0]] * x[1]]
5

[['a', 'a'], ['b', 'b'], ['c']]
0
[y for x in a for y in [x[0]] * x[1]]
7

[y for x in a for y in [x[0]] * x[1]]
8

[['a', 'a'], ['b', 'b'], ['c']]
0
[y for x in a for y in [x[0]] * x[1]]
7

Output:

['a', 'b', 'c', 'd', 'd', 'd']
2

Ví dụ 2: Mở rộng chuỗi vào danh sách to the List

Một chuỗi có thể sử dụng được, vì vậy nếu bạn mở rộng một danh sách với một chuỗi, bạn sẽ nối mỗi ký tự khi bạn lặp lại trong chuỗi.

Python3

[['a', 'a'], ['b', 'b'], ['c']]
2
['a', 'b', 'c', 'd', 'd', 'd']
5
['a', 'b', 'c', 'd', 'd', 'd']
6
[['a', 'a'], ['b', 'b'], ['c']]
5
['a', 'b', 'c', 'd', 'd', 'd']
8
[['a', 'a'], ['b', 'b'], ['c']]
7
['a', 'b', 'c', 'd', 'd', 'd']
8
a = [['a',2], ['b',2], ['c',1]]
[[x[0]]*x[1] for x in a]
8
['a', 'b', 'c', 'd', 'd', 'd']
8__

>>> a = [['a',2], ['b',2], ['c',1]]
>>> [i for i, n in a for k in range(n)]
['a', 'a', 'b', 'b', 'c']
6
[['a', 'a'], ['b', 'b'], ['c']]
5
['a', 'a', 'b', 'b', 'c']
7

[['a', 'a'], ['b', 'b'], ['c']]
0
[y for x in a for y in [x[0]] * x[1]]
7

Output:

['a', 'b', 'c', 'd', 'd', 'd']
3

Mở rộng trong danh sách Python là gì?

Phương thức mở rộng () thêm các yếu tố danh sách được chỉ định (hoặc bất kỳ điều gì có thể lặp lại) vào cuối danh sách hiện tại.adds the specified list elements (or any iterable) to the end of the current list.

Bạn có thể sử dụng tiếp tục trong danh sách hiểu biết Python không?

Chúng không thực sự có ý định là một sự thay thế cho một vòng lặp cho vòng lặp, mặc dù nhiều vòng lặp có thể được viết lại thành chúng.Khái niệm về một sự phá vỡ hoặc tiếp tục không thực sự có ý nghĩa trong bối cảnh của bản đồ hoặc bộ lọc, vì vậy bạn không thể bao gồm chúng để hiểu.you cannot include them in a comprehension.

Khi chúng ta sử dụng Extend () trong Python?

Trong Python, danh sách.Phương thức mở rộng () được sử dụng để lặp lại qua một số lặp (chuỗi, tuple, danh sách, bộ hoặc từ điển) và sau đó thêm từng phần tử của ITBER có thể vào cuối danh sách hiện tại.Độ dài của danh sách tăng theo số lượng các yếu tố có trong Itable.to iterate over an iterable (string, tuple, list, set, or dictionary) and then add each element of the iterable to the end of the current list. The length of the list increases by the number of elements present in the iterable.

Tôi có thể mở rộng danh sách bằng += python không?

Concatenate hai danh sách với phương thức mở rộng () của danh sách python.Giống như +=, phương thức này sửa đổi một danh sách hiện có tại chỗ.Vì vậy, kết quả của LST.Mở rộng ([4, 5]) thêm các phần tử 4 và 5 vào danh sách LST.. Like += , this method modifies an existing list in place. So the result of lst. extend([4, 5]) adds the elements 4 and 5 to the list lst .