Hướng dẫn how do you subtract items from a list in python? - làm thế nào để bạn trừ các mục khỏi danh sách 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

ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
5 cho từng phần tử trong
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
6, 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 ____ 16, nhưng vì nó chuyển đổi cả
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
6 và
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
9 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]
9 thành một tập hợp và lặp lại
ys = {tuple(item.items()) for item in y}
[item for item in x if tuple(item.items()) not in ys]
6 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 = 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)]
2, tốt hơn rất nhiều so với thời gian
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)]
3 của giải pháp danh sách, nhưng không phải là tốt như thời gian
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)]
4 của giải pháp đã đặt) bằng cách sắp xếp và sử dụ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:

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 = 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)]
6, 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.

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.

Làm thế nào để bạn trừ đi một giá trị trong Python? The list is one of the 4 built-in data types in Python used to store data that is mutable, can be ordered, and can be duplicated within the list. The list is created by placing all the elements within the square brackets and separated by commas.

Python cung cấp cho toán tử X -= y để trừ hai đối tượng tại chỗ bằng cách tính toán chênh lệch x -y và gán kết quả cho tên biến đầu tiên của toán tử X.

 list1 = [1,2,3,'john',7.5,3]

Trong bài viết này, chúng tôi sẽ giải quyết một tuyên bố vấn đề về phần tử trừ Python liệt kê phần tử theo phần tử. Vấn đề này chúng tôi sẽ giải quyết theo 5 cách khác nhau và thảo luận về từng phương pháp được sử dụng để giải quyết vấn đề này một cách chi tiết.

  • Danh sách trong Python là gì? Danh sách này là một trong 4 loại dữ liệu tích hợp trong Python được sử dụng để lưu trữ dữ liệu có thể thay đổi, có thể được đặt hàng và có thể được sao chép trong danh sách. Danh sách được tạo ra bằng cách đặt tất cả các yếu tố trong dấu ngoặc vuông và được phân tách bằng dấu phẩy.
  • Thí dụ :

  • Cũng đọc:
    • Cách xóa các ký tự đặc biệt khỏi chuỗi theo 4 cách
    • 3 cách để chuyển đổi danh sách thành đặt
    • Cách trừ danh sách phần tử theo phần tử trong Python
    • Phương pháp 4- Sử dụng danh sách hiểu
    • Cũng đọc: 4 cách để đếm sự xuất hiện trong danh sách Python
  • Phương pháp 5- Danh sách trừ đi Python bằng cách sử dụng tập hợp

Trong phương thức này, chúng tôi chuyển đổi cả hai danh sách thành các bộ và sử dụng các khác biệt tập hợp, để tìm sự khác biệt về phần tử giữa phần tử danh sách. Vì chúng tôi đang sử dụng các bộ, chúng tôi sẽ nhận được sự khác biệt của tất cả các yếu tố duy nhất.

Cách xóa các ký tự đặc biệt khỏi chuỗi theo 4 cách

3 cách để chuyển đổi danh sách thành đặt

Cách trừ danh sách phần tử theo phần tử trong Python

zip(*iterables)

Phương pháp 1- Danh sách trừ Python sử dụng phương thức Zip () – any python iterable like string, list, tuple, or dictionary.

Phương pháp 2- Trục Python liệt kê phần tử theo phần tử bằng phương pháp ngây thơ

  • Phương pháp 3- Danh sách trừ Python sử dụng phương thức Subtract () Numpy
  • Có nhiều cách để trừ danh sách các yếu tố khôn ngoan trong Python, bên dưới chúng ta sẽ thảo luận về 5 cách để làm điều đó.

Mã Python:

list_a = [10, 9, 8, 7]
list_b = [2, 3, 4, 5]
# initalize empty list to stored difference between lists
subtracted_list = []
# iterating on iterator object return by zip() method
for i,j in zip(list_a, list_b):
    subtracted_list.append(i - j)
print("Subtracted List ->",subtracted_list)

Output:-:-

Subtracted List -> [8, 6, 4, 2]

3 cách để chuyển đổi danh sách thành đặt

Cách trừ danh sách phần tử theo phần tử trong Python

Mã Python:

# defining lists
list_a = [10, 9, 8, 7]
list_b = [2, 3, 4, 5]
# initialize the subtracted list
subtracted_list = []
# Using for loop to subtract lists
for i in range(len(list_a)):
    subtracted_list.append(list_a[i] - list_b[i])
print("Subtracted List is ->", subtracted_list)

Output:-:-

Subtracted List is -> [8, 6, 4, 2]

Cách trừ danh sách phần tử theo phần tử trong Python

Phương pháp 1- Danh sách trừ Python sử dụng phương thức Zip ()

Phương pháp 2- Trục Python liệt kê phần tử theo phần tử bằng phương pháp ngây thơ

Các bước để làm theo để nhận danh sách trừ-

  1. Xác định hai danh sách cho sự khác biệt
  2. Chuyển đổi danh sách python thành một mảng numpy bằng cách sử dụng phương thức mảng numpy ()
  3. Trừ các mảng đó bằng phương pháp trừ Numpy.
  4. Chuyển đổi mảng numpy thành danh sách Python.
  5. Hiển thị đầu ra.

Mã Python:

# importing numpy package
import numpy as np
# defining list
list_a = [10, 9, 8, 7]
list_b = [2, 3, 4, 5]
# comverting list to numpy array
array_1 = np.array(list_a)
array_2 = np.array(list_b)
# Using numpy subtract function to get element wise subtracted array
subtracted_array = np.subtract(array_1,array_2)
print("Subtracted Numpy array is", subtracted_array)
# Converting Numpy array to list
subtracted_list = list(subtracted_array)
print("Subtracted List is", subtracted_list)

Output:-:-

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

Cũng đọc: 4 cách để đếm sự xuất hiện trong danh sách Python

Phương pháp 4- Sử dụng danh sách hiểu

Để trừ các danh sách trong Python, chúng tôi cũng sử dụng danh sách hiểu. Trong Python, danh sách hiểu là một cách để tạo một danh sách mới từ các vòng lặp khác hiện có như danh sách, bộ và bộ dữ liệu. Chúng ta cũng có thể nói rằng sự hiểu biết danh sách là phiên bản ngắn hơn của For Loop. Để biết về danh sách hiểu bạn có thể truy cập này.

Mã Python:

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

Output:-:-

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

Cũng đọc: 4 cách để đếm sự xuất hiện trong danh sách Python

Phương pháp 4- Sử dụng danh sách hiểu

Để trừ các danh sách trong Python, chúng tôi cũng sử dụng danh sách hiểu. Trong Python, danh sách hiểu là một cách để tạo một danh sách mới từ các vòng lặp khác hiện có như danh sách, bộ và bộ dữ liệu. Chúng ta cũng có thể nói rằng sự hiểu biết danh sách là phiên bản ngắn hơn của For Loop. Để biết về danh sách hiểu bạn có thể truy cập này.

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

Output:-:-

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

Phương pháp 5- Danh sách trừ đi Python bằng cách sử dụng tập hợp

Trong phương thức này, chúng tôi chuyển đổi cả hai danh sách thành các bộ và sử dụng các khác biệt tập hợp, để tìm sự khác biệt về phần tử giữa phần tử danh sách. Vì chúng tôi đang sử dụng các bộ, chúng tôi sẽ nhận được sự khác biệt của tất cả các yếu tố duy nhất.

Làm thế nào để bạn trừ các yếu tố từ một danh sách?

Sử dụng một vòng lặp để trừ một giá trị từ mỗi số trong danh sách. Phạm vi cuộc gọi (dừng) trong vòng lặp với điểm dừng theo chiều dài của danh sách để lặp lại các chỉ số của danh sách. Trừ giá trị mong muốn từ mỗi số trong danh sách và gán lại sự khác biệt với chỉ mục tương ứng.. Call range(stop) in a for-loop with stop as the length of the list to iterate over the indices of the list. Subtract the desired value from each number in the list and reassign the difference to the corresponding index.

Có một chức năng trừ trong Python?

Trừ () trong Python.hàm numpy.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.numpy. subtract() function is used when we want to compute the difference of two array.It returns the difference of arr1 and arr2, element-wise.

Chúng ta có thể trừ danh sách 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ừ đi một giá trị trong Python?

Python cung cấp cho toán tử X -= y để trừ hai đối tượng tại chỗ bằng cách tính toán chênh lệch x -y và gán kết quả cho tên biến đầu tiên của toán tử X.calculating the difference x - y and assigning the result to the first operands variable name x .