tôi có một danh sách 'a'Tìm một phần tử trong một danh sách các hàng
a= [(1,2),(1,4),(3,5),(5,7)]
Tôi cần phải tìm tất cả các bộ dữ liệu cho một số cụ thể. nói cho 1 nó sẽ là
result = [(1,2),(1,4)]
Làm cách nào để làm điều đó?
tôi có một danh sách 'a'Tìm một phần tử trong một danh sách các hàng
a= [(1,2),(1,4),(3,5),(5,7)]
Tôi cần phải tìm tất cả các bộ dữ liệu cho một số cụ thể. nói cho 1 nó sẽ là
result = [(1,2),(1,4)]
Làm cách nào để làm điều đó?
Nếu bạn chỉ muốn số đầu tiên để phù hợp bạn có thể làm điều đó như thế này:
[item for item in a if item[0] == 1]
Nếu bạn chỉ tìm kiếm dữ liệu với 1 trong đó:
[item for item in a if 1 in item]
Đọc trên List Comprehensions
[ (x,y) for x, y in a if x == 1 ]
Cũng đọc lên generator functions và yield
tuyên bố.
def filter_value(someList, value):
for x, y in someList:
if x == value :
yield x,y
result= list(filter_value(a, 1))
'nếu x == 1' phải là' nếu x == giá trị ' – sambha
for item in a:
if 1 in item:
print item
[tup for tup in a if tup[0] == 1]
Có thực sự là một cách thông minh để làm điều này đó là hữu ích cho bất kỳ danh sách các hàng nơi kích thước của mỗi tuple là 2: bạn có thể chuyển đổi danh sách của bạn thành một cuốn từ điển duy nhất.
Ví dụ,
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
Làm thế nào để bạn áp dụng điều này cho vấn đề của Bruce? – HelloGoodbye
Câu trả lời hay (mặc dù có thể không phải cho câu hỏi này). Làm việc tốt cho tôi để xác định xem một giá trị có nằm trong danh sách các bộ lựa chọn (ví dụ: nếu "hi" trong thử nghiệm) – MagicLAMP
Nó không thực sự trả lời câu hỏi, như MagicLAMP gợi ý. Cụ thể, 'dict (X)' chuyển đổi X thành một từ điển mà bộ tuple cuối cùng của bất kỳ phần tử đầu tiên phổ biến nào, là giá trị được sử dụng. Trong ví dụ về OP, điều này sẽ trả về (1,4) trái với cả (1,2) và (1,4). – BBischof
Chức năng filter
cũng có thể cung cấp một giải pháp thú vị:
result = list(filter(lambda x: x.count(1) > 0, a))
những tìm kiếm các bản ghi trong danh sách cho bất kỳ xảy ra 1
. Nếu tìm kiếm được giới hạn ở những yếu tố đầu tiên, giải pháp có thể được sửa đổi thành:
result = list(filter(lambda x: x[0] == 1, a))
Sử dụng chức năng lọc:
>>> def get_values(iterables, key_to_find):
return list(filter(lambda x:key_to_find in x, iterables)) >>> a = [(1,2),(1,4),(3,5),(5,7)] >>> get_values(a, 1) >>> [(1, 2), (1, 4)]
Ah, danh sách hiểu. – HelloGoodbye