Hướng dẫn print every 2 element of a list python - in mọi phần tử 2 của một python danh sách

Trong trường hợp bạn quan tâm đến hiệu suất, tôi đã thực hiện một điểm chuẩn nhỏ (sử dụng thư viện của tôi

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
3) để so sánh hiệu suất của các giải pháp và tôi đã bao gồm một hàm từ một trong các gói của tôi:
>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
4

from iteration_utilities import grouper
import matplotlib as mpl
from simple_benchmark import BenchmarkBuilder

bench = BenchmarkBuilder()

@bench.add_function()
def Johnsyweb(l):
    def pairwise(iterable):
        "s -> (s0, s1), (s2, s3), (s4, s5), ..."
        a = iter(iterable)
        return zip(a, a)

    for x, y in pairwise(l):
        pass

@bench.add_function()
def Margus(data):
    for i, k in zip(data[0::2], data[1::2]):
        pass

@bench.add_function()
def pyanon(l):
    list(zip(l,l[1:]))[::2]

@bench.add_function()
def taskinoor(l):
    for i in range(0, len(l), 2):
        l[i], l[i+1]

@bench.add_function()
def mic_e(it):
    def pairwise(it):
        it = iter(it)
        while True:
            try:
                yield next(it), next(it)
            except StopIteration:
                return

    for a, b in pairwise(it):
        pass

@bench.add_function()
def MSeifert(it):
    for item1, item2 in grouper(it, 2):
        pass

bench.use_random_lists_as_arguments(sizes=[2**i for i in range(1, 20)])
benchmark_result = bench.run()
mpl.rcParams['figure.figsize'] = (8, 10)
benchmark_result.plot_both(relative_to=MSeifert)

Hướng dẫn print every 2 element of a list python - in mọi phần tử 2 của một python danh sách

Vì vậy, nếu bạn muốn giải pháp nhanh nhất mà không có sự phụ thuộc bên ngoài, bạn có thể chỉ nên sử dụng phương pháp được đưa ra bởi Johnysweb (tại thời điểm viết, đó là câu trả lời được nâng cấp và được chấp nhận nhiều nhất).

Nếu bạn không bận tâm đến sự phụ thuộc bổ sung thì

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
5 từ
>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
6 có thể sẽ nhanh hơn một chút.

Suy nghĩ bổ sung

Một số phương pháp có một số hạn chế, chưa được thảo luận ở đây.

Ví dụ, một vài giải pháp chỉ hoạt động cho các chuỗi (đó là danh sách, chuỗi, v.v.), ví dụ như các giải pháp Margus/Pyanon/Taskinoor sử dụng lập chỉ mục trong khi các giải pháp khác hoạt động trên bất kỳ điều kiện nào (đó là trình tự và máy phát điện, trình tạo ra) như Johnysweb/ MIC_E/Giải pháp của tôi.and generators, iterators) like Johnysweb/mic_e/my solutions.

Sau đó, Johnysweb cũng cung cấp một giải pháp hoạt động cho các kích thước khác so với 2 trong khi các câu trả lời khác không (không sao,

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
4 cũng cho phép đặt số lượng phần tử thành "nhóm").

Sau đó, cũng có câu hỏi về những gì sẽ xảy ra nếu có một số yếu tố kỳ lạ trong danh sách. Các mặt hàng còn lại có nên bị loại bỏ? Danh sách có nên được đệm để làm cho nó thậm chí có kích thước? Các mặt hàng còn lại có nên được trả lại dưới dạng đơn lẻ không? Câu trả lời khác không giải quyết trực tiếp điểm này, tuy nhiên nếu tôi không bỏ qua bất cứ điều gì, tất cả họ đều tuân theo cách tiếp cận mà mục còn lại sẽ được loại bỏ (ngoại trừ câu trả lời của Taskinoors - điều đó thực sự sẽ tăng một ngoại lệ).

Với

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
5, bạn có thể quyết định những gì bạn muốn làm:

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]

Nhận mọi yếu tố khác từ danh sách Python có vẻ dễ thực hiện nhưng nó thực sự đòi hỏi một số kiến ​​thức về cơ bản của Python.

Để có được mọi yếu tố khác trong danh sách Python, bạn có thể sử dụng toán tử lát cắt và sử dụng thực tế là toán tử này cho phép cung cấp một đối số bước (với cú pháp mở rộng của nó). Một cách tiếp cận khác là sử dụng khái niệm toán học về phần còn lại và áp dụng nó cho các chỉ mục liệt kê.

Hãy để sáng tạo và đưa ra nhiều cách để giải quyết vấn đề này!

  • Làm cách nào để hiển thị mọi yếu tố khác trong danh sách Python?
  • Cách in từng phần tử thứ hai của danh sách bằng cách sử dụng hàm phạm vi
  • Cách lấy mọi yếu tố khác trong danh sách bằng cách sử dụng danh sách hiểu biết
  • Sử dụng chức năng liệt kê để có được mọi yếu tố danh sách khác trong Python
  • Trích xuất mọi yếu tố khác từ danh sách Python bằng Lambda
  • Cách lấy mọi yếu tố thứ n từ danh sách Python
  • Sự kết luận

Thứ nhất, hãy để Lôi tạo một danh sách các chuỗi

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  

Thật tuyệt, toán tử lát cắt trả về mọi yếu tố khác bắt đầu từ phần đầu tiên.

Toán tử lát cắt theo cú pháp bên dưới (cái này thực sự được gọi là cú pháp lát cắt mở rộng).extended slice syntax).

string[start:end:step]

Khi bắt đầu và kết thúc không được chỉ định, toàn bộ danh sách được tính đến.start and end are not specified the entire list is taken into account.

Giá trị bước cho phép bỏ qua một số mục trong danh sách, trong ví dụ của chúng tôi, chúng tôi đã vượt qua 2 là giá trị của bước. Đó là lý do tại sao đầu ra in mọi chuỗi khác trong danh sách.step value allows to skip some of the items in the list, in our example we have passed 2 as the value of the step. That’s why the output prints every other string in the list.

Nếu chúng ta muốn bắt đầu từ phần tử thứ hai trong danh sách, cú pháp sẽ trở thành như sau:

>>> print(countries[1::2])
['United Kingdom', 'United States'] 

Lần này chúng tôi đã bắt đầu bởi INDEX 1, hãy nhớ rằng chỉ mục cho các danh sách bắt đầu từ 0.

Cách in từng phần tử thứ hai của danh sách bằng cách sử dụng hàm phạm vi

Cách lấy mọi yếu tố khác trong danh sách bằng cách sử dụng danh sách hiểu biết

Sử dụng chức năng liệt kê để có được mọi yếu tố danh sách khác trong Python

Trích xuất mọi yếu tố khác từ danh sách Python bằng Lambda

Cách lấy mọi yếu tố thứ n từ danh sách Python

Sự kết luận

>>> list(range(0,5,2))
[0, 2, 4] 

Thứ nhất, hãy để Lôi tạo một danh sách các chuỗi

>>> list(range(1,5,2))
[1, 3] 

Thật tuyệt, toán tử lát cắt trả về mọi yếu tố khác bắt đầu từ phần đầu tiên.

Toán tử lát cắt theo cú pháp bên dưới (cái này thực sự được gọi là cú pháp lát cắt mở rộng).

def every_second_element(values):
    second_values = []

    for index in range(1, len(values), 2):
        second_values.append(values[index])

    return second_values 

Khi bắt đầu và kết thúc không được chỉ định, toàn bộ danh sách được tính đến.

Giá trị bước cho phép bỏ qua một số mục trong danh sách, trong ví dụ của chúng tôi, chúng tôi đã vượt qua 2 là giá trị của bước. Đó là lý do tại sao đầu ra in mọi chuỗi khác trong danh sách.

countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
print(every_second_element(countries))

[output]
['United Kingdom', 'United States'] 

Cách lấy mọi yếu tố khác trong danh sách bằng cách sử dụng danh sách hiểu biết

Sử dụng chức năng liệt kê để có được mọi yếu tố danh sách khác trong Python

Trích xuất mọi yếu tố khác từ danh sách Python bằng Lambda

Cách lấy mọi yếu tố thứ n từ danh sách Python

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
0

Sự kết luận

Thứ nhất, hãy để Lôi tạo một danh sách các chuỗi

Fantastic!

Sử dụng chức năng liệt kê để có được mọi yếu tố danh sách khác trong Python

Trích xuất mọi yếu tố khác từ danh sách Python bằng Lambda

Cách lấy mọi yếu tố thứ n từ danh sách Python

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
1

Sự kết luận

Thứ nhất, hãy để Lôi tạo một danh sách các chuỗi

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
2

Thật tuyệt, toán tử lát cắt trả về mọi yếu tố khác bắt đầu từ phần đầu tiên.

Toán tử lát cắt theo cú pháp bên dưới (cái này thực sự được gọi là cú pháp lát cắt mở rộng).

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
3

Khi bắt đầu và kết thúc không được chỉ định, toàn bộ danh sách được tính đến.

Trích xuất mọi yếu tố khác từ danh sách Python bằng Lambda

Để trích xuất mọi yếu tố khác từ danh sách, chúng tôi cũng có thể sử dụng chức năng Python Lambda.

Khi được sử dụng cùng với Filter (), hàm lambda cho phép lọc từng phần tử của một danh sách.

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
4

Chúng ta có thể sử dụng hàm Lambda để xác minh xem lời nhắc cho một chỉ mục nhất định bằng 1.

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
5

Đây là cách nó trông giống như khi áp dụng cho các chỉ mục trong danh sách của chúng tôi:

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
6

Hãy gọi cho chức năng bộ lọc và chuyển các đối số sau cho nó:

  1. Hàm Lambda: Nó xác minh phần còn lại cho một chỉ mục danh sách nhất định. Nếu hàm Lambda trả về true, chỉ mục được bao gồm trong đầu ra của hàm bộ lọc.: it verifies the remainder for a given list index. If the lambda function returns True the index is included in the output of the filter function.
  2. Các chỉ mục từ danh sách: Bạn có thể truy xuất các chỉ mục đó bằng cách sử dụng các hàm phạm vi () và len ().: you can retrieve those indexes by using the range() and len() functions.
>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
7

Bây giờ, hãy sử dụng chức năng Call to the Filter bên trong danh sách hiểu được

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
8

Kết quả là giống nhau chúng ta đã thấy trong các phần trước nhưng việc triển khai phức tạp hơn rất nhiều.

Tuy nhiên, đây là cơ hội để bạn học cách sử dụng một vài cấu trúc Python:

  • Danh sách hiểu
  • Cho vòng lặp
  • Chức năng lọc
  • Hàm Lambda
  • Toán tử modulo.
  • Phạm vi () hàm
  • hàm len ()

Cách lấy mọi yếu tố thứ n từ danh sách Python

Chúng tôi sẽ hoàn thành hướng dẫn này bằng cách xem xét cách lấy mọi yếu tố thứ n từ danh sách Python.

Hãy để tạo ra một chức năng có ba đối số:

  • Danh sách ban đầu
  • Bắt đầu chỉ mục cho danh sách được lọc
  • N: Nếu n là 2 thì chúng ta sẽ nhận được mỗi phần tử thứ hai, nếu n là 3 thì chúng ta sẽ truy xuất mọi yếu tố thứ ba, v.v.
>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]
9

Bây giờ, sử dụng chức năng đầu vào để lấy các giá trị của Index Start và N từ dòng lệnh khi thực hiện chương trình Python.

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
0

Lưu ý: Chúng tôi đã sử dụng hàm int () để chuyển đổi các chuỗi được trả về bởi hàm input () thành số nguyên.: we have used the int() function to convert the strings returned by the input() function into integers.

Và cuối cùng chúng ta có thể gọi chức năng của mình:

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
1

Hai câu lệnh in sử dụng phương thức String định dạng () để in hai tin nhắn khi bạn thực thi chương trình.

Dưới đây là ba lần chạy của chương trình để kiểm tra nó trả về kết quả dự kiến.

>>> countries = ['Italy', 'United Kingdom', 'Germany', 'United States', 'France']
>>> print(countries[::2])
['Italy', 'Germany', 'France']  
2

Tất cả đều tốt, mã hoạt động tốt 🙂

Sự kết luận

Chúng tôi đã thấy rất nhiều cách khác nhau để có được mọi yếu tố khác trong danh sách Python.

Bạn đã thấy cách sử dụng:

  • toán tử lát (cú pháp mở rộng).
  • cho vòng lặp với hàm phạm vi ().
  • Danh sách hiểu với hàm phạm vi ().
  • Danh sách hiểu với chức năng liệt kê.
  • Danh sách hiểu với các chức năng của Bộ lọc, Lambda, Phạm vi và LEN.

Cách tiếp cận đơn giản nhất là cú pháp mở rộng cho toán tử lát cắt.

Bạn thích cái nào hơn?

Bài viết liên quan:

Hướng dẫn print every 2 element of a list python - in mọi phần tử 2 của một python danh sách

Tôi là một nhà lãnh đạo công nghệ, kỹ sư phần mềm và huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành một nhà phát triển siêu!

Làm thế nào để tôi lặp lại cứ sau 2 trong Python?

Sử dụng lập chỉ mục danh sách để lặp lại mỗi hai yếu tố trong một danh sách.Sử dụng danh sách danh sách danh sách [0 :: 2] Để trả về mọi yếu tố thứ hai của danh sách, bắt đầu tại INDEX 0. to iterate every two elements in a list. Use list indexing list[0::2] to return every second element of list , starting at index 0 .

Làm cách nào để in mọi yếu tố khác trong danh sách Python?

Sử dụng Enumerate () để truy cập vào mọi yếu tố khác trong danh sách {Sử dụng-for-loop-erumerate} Sử dụng cú pháp cho chỉ mục, phần tử trong liệt kê (có thể lặp lại) để lặp lại thông qua danh sách có thể truy cập được và truy cập từng chỉ mục với phần tử tương ứng của nó.Ở mỗi lần lặp, sử dụng cú pháp nếu index % 2 == 0 để kiểm tra xem chỉ mục có chẵn không. {use-for-loop-enumerate} Use the syntax for index, element in enumerate(iterable) to iterate through the list iterable and access each index with its corresponding element . At each iteration, use the syntax if index % 2 == 0 to check if index is even.

Làm cách nào để in số thứ hai trong danh sách Python?

Vì chúng tôi muốn phần tử thứ hai trong danh sách, sử dụng -2 làm chỉ mục.use -2 as index.

Làm thế nào để bạn in mọi yếu tố thứ n từ một mảng trong Python?

Để giữ mọi yếu tố thứ n trong một danh sách trong Python, cách dễ nhất là sử dụng cắt lát ...
lst = [1, 2, 3, 4, 5, 6, 7] Every_3rd = lst [:: 3] in (Every_3rd) #Output: [1, 4, 7] ....
def keep_every_nth (lst, n): return lst [:: n] ví dụ = [1, 2, 3, 4, 5, 6, 7] in (keep_every_nth (ví dụ, 3)) #output: [1, 4, 7, 7].