Hướng dẫn how to subtract a list from another list in python - cách trừ một danh sách khỏi một danh sách khác trong python

Đối với nhiều trường hợp sử dụng, câu trả lời bạn muốn là:

ys = set(y)
[item for item in x if item not in ys]

Đây là một sự kết hợp giữa câu trả lời của Aaronasterling và câu trả lời của Quantumsoup.

Phiên bản của Aaronasterling không so sánh mục len(y) cho từng phần tử trong x, do đó, nó mất thời gian bậc hai. Phiên bản của QuantumSoup sử dụng các bộ, do đó, nó thực hiện một bộ tra cứu thời gian không đổi duy nhất cho từng phần tử trong ____ 8, nhưng vì nó chuyển đổi cả x

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
1 thành các bộ, nó mất thứ tự các yếu tố của bạn.

Bằng cách chỉ chuyển đổi

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
1 thành một tập hợp và lặp lại x theo thứ tự, bạn có được thời gian tốt nhất của cả hai thế giới và bảo tồn đặt hàng.**


Tuy nhiên, điều này vẫn có một vấn đề từ phiên bản của QuantumSoup: nó yêu cầu các yếu tố của bạn có thể băm. Điều đó được xây dựng khá nhiều vào bản chất của các bộ. ** Nếu bạn đang cố gắng, ví dụ: trừ một danh sách các dicts từ một danh sách các dicts khác, nhưng danh sách để trừ lớn, bạn làm gì?

Nếu bạn có thể trang trí các giá trị của mình theo một cách nào đó mà chúng có thể băm, điều đó sẽ giải quyết được vấn đề. Ví dụ, với một từ điển phẳng có giá trị có thể băm:

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]

Nếu các loại của bạn phức tạp hơn một chút (ví dụ: bạn thường xử lý các giá trị tương thích với JSON, có thể băm hoặc danh sách hoặc dicts có giá trị theo cùng một loại), bạn vẫn có thể sử dụng giải pháp này. Nhưng một số loại không thể được chuyển đổi thành bất cứ thứ gì có thể băm.


Nếu các mặt hàng của bạn không và không thể được tạo ra, có thể băm, nhưng chúng có thể so sánh được, ít nhất bạn có thể có được thời gian đăng nhập tuyến tính (

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
4, tốt hơn rất nhiều so với thời gian
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
5 của giải pháp danh sách, nhưng không phải là tốt như thời gian
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
6 của giải pháp đã đặt) bằng cách sắp xếp và sử dụng
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
7:

ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]

Nếu các mặt hàng của bạn không thể băm cũng không thể so sánh, thì bạn sẽ bị mắc kẹt với giải pháp bậc hai.


* Lưu ý rằng bạn cũng có thể làm điều này bằng cách sử dụng một cặp đối tượng

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
8, mà bạn có thể tìm thấy công thức nấu ăn và mô-đun của bên thứ ba. Nhưng tôi nghĩ điều này là đơn giản hơn.

** Lý do tra cứu là thời gian không đổi là tất cả những gì nó phải làm là băm giá trị và xem nếu có một mục cho băm đó. Nếu nó không thể băm giá trị, điều này sẽ không hoạt động.

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để trừ hai danh sách. Bạn có thể học cách thực hiện việc này bằng cách sử dụng Thư viện Khoa học Dữ liệu phổ biến

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9, For-Loops, Danh sách Trình tạo và Chức năng
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
0 tích hợp hữu ích.

Có thể làm việc với danh sách là một kỹ năng quan trọng cho bất kỳ nhà phát triển Python nào, cho dù là người mới bắt đầu hay Pythonista tiên tiến. Trừ hai danh sách ít trực quan hơn là chỉ đơn giản là trừ chúng. Vì điều này, hãy xem bốn phương pháp khác nhau được cung cấp dưới đây để tìm ra những cách dễ dàng để trừ hai danh sách!

Câu trả lời nhanh: Sử dụng Numpy

ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
1

Hướng dẫn how to subtract a list from another list in python - cách trừ một danh sách khỏi một danh sách khác trong python
Trừ hai danh sách Python với hàm
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
0

  • Sử dụng Numpy để trừ hai danh sách Python
  • Sử dụng zip để trừ hai danh sách python
  • Python cho các vòng lặp để trừ hai danh sách
  • Danh sách của Python để trừ hai danh sách
  • Sự kết luận

Sử dụng Numpy để trừ hai danh sách Python

Sử dụng zip để trừ hai danh sách python

Python cho các vòng lặp để trừ hai danh sách

Danh sách của Python để trừ hai danh sách

# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]

Thư viện

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9 phổ biến thường được sử dụng để làm việc trong khoa học dữ liệu, và như vậy, đi kèm với một tấn các phương pháp hữu ích khác nhau để thao tác dữ liệu số. Một trong những lợi thế chính mà
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9 cung cấp là đối tượng
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
5, rất giống với đối tượng danh sách Python.

  1. Một trong những phương pháp mà
    ys = {tuple(item.items()) for item in y}
    [item for item in x if tuple(item.items()) not in ys]
    
    9 cung cấp là phương pháp
    ys = sorted(y)
    def bisect_contains(seq, item):
        index = bisect.bisect(seq, item)
        return index < len(seq) and seq[index] == item
    [item for item in x if bisect_contains(ys, item)]
    
    1. Phương pháp này lấy hai
    ys = sorted(y)
    def bisect_contains(seq, item):
        index = bisect.bisect(seq, item)
        return index < len(seq) and seq[index] == item
    [item for item in x if bisect_contains(ys, item)]
    
    5s làm đầu vào và cung cấp các phép trừ yếu tố theo hai danh sách.
  2. Hãy để xem cách chúng ta có thể sử dụng
    ys = {tuple(item.items()) for item in y}
    [item for item in x if tuple(item.items()) not in ys]
    
    9 và Python để trừ hai danh sách:
  3. Hãy cùng xem những gì chúng tôi đã làm ở đây:

Chúng tôi đã tải hai danh sách của chúng tôi,

# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
0 và
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
1 và chuyển đổi chúng thành các mảng Numpy,
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
2 và
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
3

Sử dụng zip để trừ hai danh sách python

Python cho các vòng lặp để trừ hai danh sách

Danh sách của Python để trừ hai danh sách

# Subtract two lists with for loops
list1 = [10, 11, 12]
list2 = [1, 2, 3]

subtracted = list()
for item1, item2 in zip(list1, list2):
    item = item1 - item2
    subtracted.append(item)

print(subtracted)

# Returns: [9, 9, 9]

Thư viện

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9 phổ biến thường được sử dụng để làm việc trong khoa học dữ liệu, và như vậy, đi kèm với một tấn các phương pháp hữu ích khác nhau để thao tác dữ liệu số. Một trong những lợi thế chính mà
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9 cung cấp là đối tượng
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
5, rất giống với đối tượng danh sách Python.

  1. Một trong những phương pháp mà
    ys = {tuple(item.items()) for item in y}
    [item for item in x if tuple(item.items()) not in ys]
    
    9 cung cấp là phương pháp
    ys = sorted(y)
    def bisect_contains(seq, item):
        index = bisect.bisect(seq, item)
        return index < len(seq) and seq[index] == item
    [item for item in x if bisect_contains(ys, item)]
    
    1. Phương pháp này lấy hai
    ys = sorted(y)
    def bisect_contains(seq, item):
        index = bisect.bisect(seq, item)
        return index < len(seq) and seq[index] == item
    [item for item in x if bisect_contains(ys, item)]
    
    5s làm đầu vào và cung cấp các phép trừ yếu tố theo hai danh sách.
  2. Hãy để xem cách chúng ta có thể sử dụng
    ys = {tuple(item.items()) for item in y}
    [item for item in x if tuple(item.items()) not in ys]
    
    9 và Python để trừ hai danh sách:
  3. Hãy cùng xem những gì chúng tôi đã làm ở đây:

Chúng tôi đã tải hai danh sách của chúng tôi,

# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
0 và
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
1 và chuyển đổi chúng thành các mảng Numpy,
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
2 và
# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
3

Sau đó chúng tôi đã sử dụng phương thức

# Subtract two lists with numpy
import numpy as np

list1 = [10, 11, 12]
list2 = [1, 2, 3]

array1 = np.array(list1)
array2 = np.array(list2)

subtracted_array = np.subtract(array1, array2)
subtracted = list(subtracted_array)

print(subtracted)

# Returns: [9, 9, 9]
4 để trừ hai danh sách This tutorial teaches you exactly what the
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
0 function does and shows you some creative ways to use the function.

Python cho các vòng lặp để trừ hai danh sách

Danh sách của Python để trừ hai danh sách

Hãy để xem cách chúng ta có thể sử dụng cho các vòng lặp để trừ danh sách:

# Subtract two lists with for loops
list1 = [10, 11, 12]
list2 = [1, 2, 3]

subtracted = list()
for i in range(len(list1)):
    item = list1[i] - list2[i]
    subtracted.append(item)

print(subtracted)

# Returns: [9, 9, 9]

Hãy cùng xem những gì chúng tôi đã thực hiện với phương pháp vòng lặp của chúng tôi ở đây:

  1. Chúng tôi đã tạo một danh sách trống có tên
    # Subtract two lists with for loops
    list1 = [10, 11, 12]
    list2 = [1, 2, 3]
    
    subtracted = list()
    for item1, item2 in zip(list1, list2):
        item = item1 - item2
        subtracted.append(item)
    
    print(subtracted)
    
    # Returns: [9, 9, 9]
    0
  2. Sau đó chúng tôi lặp qua phạm vi từ 0 đến chiều dài của danh sách đầu tiên của chúng tôi
  3. Sau đó, chúng tôi chỉ định sự khác biệt giữa mỗi mục ITH của mỗi danh sách cho biến của chúng tôi
    # Subtract two lists with for loops
    list1 = [10, 11, 12]
    list2 = [1, 2, 3]
    
    subtracted = list()
    for item1, item2 in zip(list1, list2):
        item = item1 - item2
        subtracted.append(item)
    
    print(subtracted)
    
    # Returns: [9, 9, 9]
    2
  4. # Subtract two lists with for loops
    list1 = [10, 11, 12]
    list2 = [1, 2, 3]
    
    subtracted = list()
    for item1, item2 in zip(list1, list2):
        item = item1 - item2
        subtracted.append(item)
    
    print(subtracted)
    
    # Returns: [9, 9, 9]
    2 này sau đó được thêm vào danh sách của chúng tôi

Cuối cùng, hãy để

Bạn muốn tìm hiểu thêm về Python for-loops? Kiểm tra hướng dẫn chuyên sâu của tôi đưa người dùng từ người mới bắt đầu đến nâng cao cho người dùng! Bạn muốn xem một video thay thế? Kiểm tra hướng dẫn YouTube của tôi ở đây. Check out my in-depth tutorial that takes your from beginner to advanced for-loops user! Want to watch a video instead? Check out my YouTube tutorial here.

Danh sách của Python để trừ hai danh sách

Cuối cùng, hãy để tìm hiểu cách chúng ta có thể sử dụng danh sách hiểu để trừ hai danh sách. Phương pháp này thực sự cũng sử dụng chức năng

ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
0 để tạo một danh sách mới trừ hai danh sách.

Hãy cùng xem cách chúng ta có thể làm điều này!

# Subtract two lists with zip()
list1 = [10, 11, 12]
list2 = [1, 2, 3]

subtracted = [element1 - element2 for (element1, element2) in zip(list1, list2)]
print(subtracted)

# Returns: [9, 9, 9]

Hãy cùng xem những gì chúng tôi đã làm ở đây:

  1. Chúng tôi đã sử dụng danh sách hiểu biết để lặp qua các mục trong đối tượng zip () của
    # Subtract two lists with numpy
    import numpy as np
    
    list1 = [10, 11, 12]
    list2 = [1, 2, 3]
    
    array1 = np.array(list1)
    array2 = np.array(list2)
    
    subtracted_array = np.subtract(array1, array2)
    subtracted = list(subtracted_array)
    
    print(subtracted)
    
    # Returns: [9, 9, 9]
    0 và
    # Subtract two lists with numpy
    import numpy as np
    
    list1 = [10, 11, 12]
    list2 = [1, 2, 3]
    
    array1 = np.array(list1)
    array2 = np.array(list2)
    
    subtracted_array = np.subtract(array1, array2)
    subtracted = list(subtracted_array)
    
    print(subtracted)
    
    # Returns: [9, 9, 9]
    1
  2. Trong sự hiểu biết này, chúng tôi tìm thấy sự khác biệt giữa hai yếu tố

Bạn muốn tìm hiểu thêm về toàn bộ danh sách Python? Kiểm tra hướng dẫn chuyên sâu này bao gồm mọi thứ bạn cần biết, với các ví dụ thực hành. Thêm một người học trực quan, hãy xem hướng dẫn YouTube của tôi ở đây. Check out this in-depth tutorial that covers off everything you need to know, with hands-on examples. More of a visual learner, check out my YouTube tutorial here.

Sự kết luận

Trong bài đăng này, bạn đã học cách sử dụng để trừ hai danh sách. Bạn đã học cách thực hiện việc này bằng phương pháp

# Subtract two lists with for loops
list1 = [10, 11, 12]
list2 = [1, 2, 3]

subtracted = list()
for i in range(len(list1)):
    item = list1[i] - list2[i]
    subtracted.append(item)

print(subtracted)

# Returns: [9, 9, 9]
2, hàm
ys = sorted(y)
def bisect_contains(seq, item):
    index = bisect.bisect(seq, item)
    return index < len(seq) and seq[index] == item
[item for item in x if bisect_contains(ys, item)]
0, vòng lặp Python và khả năng hiểu danh sách Python. Làm việc với danh sách là một kỹ năng quan trọng mà không phải lúc nào cũng hoạt động như bạn mong đợi, vì vậy việc chuẩn bị cho những thách thức khác nhau mà bạn có thể gặp phải là rất quan trọng.

Để tìm hiểu thêm về phương pháp

# Subtract two lists with for loops
list1 = [10, 11, 12]
list2 = [1, 2, 3]

subtracted = list()
for i in range(len(list1)):
    item = list1[i] - list2[i]
    subtracted.append(item)

print(subtracted)

# Returns: [9, 9, 9]
4, hãy xem tài liệu chính thức.

Bạn có thể trừ một danh sách từ một danh sách khác trong Python không?

Trừ hai danh sách bằng hàm zip () trong phương thức này, chúng tôi sẽ chuyển hai danh sách đầu vào cho hàm zip. Sau đó, lặp lại trên đối tượng zip bằng cách sử dụng cho vòng lặp. Trên mỗi lần lặp, chương trình sẽ lấy một yếu tố từ List1 và List2, trừ chúng và nối kết quả vào danh sách khác. In this method, we'll pass the two input lists to the Zip Function. Then, iterate over the zip object using for loop. On every iteration, the program will take an element from list1 and list2, subtract them and append the result into another list.

Làm thế nào để bạn trừ các mục từ một danh sách trong Python?

Sử dụng một vòng lặp để trừ một giá trị từ mỗi số trong danh sách..
Số = [1, 2, 3].
Đối với I trong phạm vi (LEN (số)):.
số [i] = số [i] - 1 ..

Làm thế nào để bạn trừ đi một mảng từ một mảng khác trong Python?

Hàm Subtract () được sử dụng khi chúng ta muốn tính toán chênh lệch của hai mảng. Nó trả về sự khác biệt của ARR1 và ARR2, phần tử khôn ngoan.Tham số: ARR1: [Array_Lhe hoặc Scalar] Mảng đầu vào đầu tiên. is used when we want to compute the difference of two array.It returns the difference of arr1 and arr2, element-wise. Parameters : arr1 : [array_like or scalar]1st Input array.

Làm thế nào để bạn tìm thấy sự khác biệt giữa hai danh sách trong Python?

sự khác biệt () để có được sự khác biệt giữa hai danh sách.Sử dụng set () để chuyển đổi cả hai danh sách thành tập hợp.Sử dụng Set.Diferference (các) bộ trong đó tập hợp đầu tiên và s là bộ thứ hai để có được sự khác biệt giữa cả hai bộ.Use set. difference(s) where set is the first set and s is the second set to get the difference between both sets.