Hướng dẫn group same value in list python - nhóm cùng một giá trị trong python danh sách

29

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Từ danh sách này:

N = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]

Tôi đang cố gắng tạo ra:

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]

Bất kỳ giá trị nào được tìm thấy là giống nhau được nhóm lại thành danh sách phụ riêng của nó. Đây là nỗ lực của tôi cho đến nay, tôi nghĩ rằng tôi nên sử dụng vòng lặp

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
3?

global n

n = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5] #Sorted list
l = [] #Empty list to append values to

def compare[val]:
   """ This function receives index values
   from the n list [n[0] etc] """
   
   global valin
   valin = val

   global count
   count = 0

    for i in xrange[len[n]]:
        if valin == n[count]: # If the input value i.e. n[x] == n[iteration]
            temp = valin, n[count]
             l.append[temp] #append the values to a new list
             count +=1
        else:
          count +=1
    

for x in xrange [len[n]]:
    compare[n[x]] #pass the n[x] to compare function

Isherwood

54,6K15 Huy hiệu vàng106 Huy hiệu bạc147 Huy hiệu đồng15 gold badges106 silver badges147 bronze badges

Khi được hỏi ngày 17 tháng 5 năm 2015 lúc 23:11May 17, 2015 at 23:11

2

Sử dụng

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
4:

from itertools import groupby

N = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]

print[[list[j] for i, j in groupby[N]]]

Output:

[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5]]

Lưu ý bên: Ngăn chặn sử dụng biến toàn cầu khi bạn không cần.need to.

Đã trả lời ngày 17 tháng 5 năm 2015 lúc 23:20May 17, 2015 at 23:20

Aldebaldebaldeb

6.2185 Huy hiệu vàng23 Huy hiệu bạc48 Huy hiệu đồng5 gold badges23 silver badges48 bronze badges

5

Ai đó đề cập đến

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
5 nó sẽ nhận được
L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
6

Nói cách khác, khi số lượng của danh sách không theo thứ tự hoặc đó là một danh sách lộn xộn, nó không có sẵn.

Vì vậy, tôi có câu trả lời tốt hơn để giải quyết vấn đề này.

from collections import Counter

N = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
C = Counter[N]

print [ [k,]*v for k,v in C.items[]]

Đã trả lời ngày 18 tháng 5 năm 2015 lúc 2:14May 18, 2015 at 2:14

Burger Kingburger KingBurger King

2.8653 huy hiệu vàng19 Huy hiệu bạc45 Huy hiệu đồng3 gold badges19 silver badges45 bronze badges

0

Bạn có thể sử dụng

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
4 cùng với danh sách hiểu biết

>>> l =  [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
>>> [list[v] for k,v in itertools.groupby[l]]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5, 5]]

Điều này có thể được gán cho biến

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
8 như trong

L = [list[v] for k,v in itertools.groupby[l]]

Đã trả lời ngày 17 tháng 5 năm 2015 lúc 23:20May 17, 2015 at 23:20

AldebaldebBhargav Rao

6.2185 Huy hiệu vàng23 Huy hiệu bạc48 Huy hiệu đồng27 gold badges122 silver badges137 bronze badges

Ai đó đề cập đến

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
5 nó sẽ nhận được
L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
6

Nói cách khác, khi số lượng của danh sách không theo thứ tự hoặc đó là một danh sách lộn xộn, nó không có sẵn.

new_list = []
for value in old_list:
    if new_list and new_list[-1][0] == value:
        new_list[-1].append[value]
    else:
        new_list.append[[value]]

Vì vậy, tôi có câu trả lời tốt hơn để giải quyết vấn đề này.

Đã trả lời ngày 18 tháng 5 năm 2015 lúc 2:14

for value in iterable:
    do_stuff[value]

iterator = iter[iterable]
while True:
    try:
        value = next[iterator]
    except StopIteration:
        break
    do_stuff[value]

Burger Kingburger King

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
0

2.8653 huy hiệu vàng19 Huy hiệu bạc45 Huy hiệu đồng

Bạn có thể sử dụng

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
4 cùng với danh sách hiểu biếtMay 17, 2015 at 23:18

Điều này có thể được gán cho biến

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
8 như trongabarnert

Bhargav Raobhargav Rao44 gold badges574 silver badges652 bronze badges

3

47.5K27 Huy hiệu vàng122 Huy hiệu bạc137 Huy hiệu đồng

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
1

Bạn đang quá mức này.

Những gì bạn muốn làm là: Đối với mỗi giá trị, nếu nó giống như giá trị cuối cùng, chỉ cần nối nó vào danh sách các giá trị cuối cùng; Nếu không, tạo một danh sách mới. Bạn có thể dịch tiếng Anh đó trực tiếp sang Python:Oct 10, 2018 at 20:45

Thậm chí có nhiều cách đơn giản hơn để làm điều này nếu bạn sẵn sàng trừu tượng hơn một chút, ví dụ: bằng cách sử dụng các chức năng nhóm trong

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
9. Nhưng điều này sẽ dễ hiểu.syviad

Nếu bạn thực sự cần phải làm điều này với vòng lặp

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
3, bạn có thể dịch bất kỳ vòng lặp
global n

n = [1,2,2,3,3,3,4,4,4,4,5,5,5,5,5] #Sorted list
l = [] #Empty list to append values to

def compare[val]:
   """ This function receives index values
   from the n list [n[0] etc] """
   
   global valin
   valin = val

   global count
   count = 0

    for i in xrange[len[n]]:
        if valin == n[count]: # If the input value i.e. n[x] == n[iteration]
            temp = valin, n[count]
             l.append[temp] #append the values to a new list
             count +=1
        else:
          count +=1
    

for x in xrange [len[n]]:
    compare[n[x]] #pass the n[x] to compare function
1 nào thành vòng lặp
L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
3 như thế này:1 silver badge7 bronze badges

Hoặc, nếu bạn biết điều đó là một chuỗi, bạn có thể sử dụng vòng lặp

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
3 đơn giản hơn một chút:

L = [[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
2

Nhưng cả hai điều này làm cho mã của bạn ít đọc hơn, ít pythonic hơn, phức tạp hơn, kém hiệu quả hơn, dễ hiểu hơn, v.v.May 18, 2015 at 1:49

Đã trả lời ngày 17 tháng 5 năm 2015 lúc 23:18Hunter McMillen

ABARNERTABARNERT22 gold badges116 silver badges165 bronze badges

Làm thế nào để bạn nhóm các mục tương tự với một danh sách trong Python?

Phương thức Groupby sẽ nhóm tất cả các chuỗi tương tự thành một đối tượng ITER ...
Khởi tạo danh sách các chuỗi ..
Nhập mô -đun Itertools ..
Khởi tạo một danh sách trống ..
Bây giờ, chuyển các chuỗi và chức năng Lambda cho itertools. ....
Hàm Lambda sẽ trả về phần đầu tiên của chuỗi sau khi chia nó bằng -.

Làm cách nào để nhóm một danh sách các giá trị trong Python?

Sử dụng danh sách hiểu để nhóm A danh sách theo các giá trị.Sử dụng cú pháp hiểu biết danh sách [Danh sách [1] cho danh sách trong list_of_lists] để nhận danh sách chỉ chứa phần tử thứ hai từ mỗi danh sách trong list_of_lists.Đặt cuộc gọi [danh sách] với danh sách là kết quả trước đó để xóa bất kỳ phần tử trùng lặp nào khỏi danh sách.. Use the list comprehension syntax [list[1] for list in list_of_lists] to get a list containing only the second element from each list in list_of_lists . Call set[list] with list as the previous result to remove any duplicate elements from list .

Là danh sách [] và [] giống nhau trong Python?

Về mặt thực tế không có sự khác biệt.Tôi hy vọng [] sẽ nhanh hơn, bởi vì nó không liên quan đến việc tra cứu toàn cầu theo sau là một cuộc gọi chức năng.Ngoài ra, nó cũng vậy.So sánh danh sách = int;Danh sách [] với danh sách = int;[].. I'd expect [] to be faster, because it does not involve a global lookup followed by a function call. Other than that, it's the same. Compare list = int; list[] with list = int; [] .

Làm thế nào để bạn nhóm dữ liệu trong một danh sách?

Để nhóm dữ liệu trong danh sách trong Excel: Chọn các hàng hoặc cột bạn muốn nhóm.Trên tab Dữ liệu, trong nhóm phác thảo, nhấp vào lệnh nhóm. Trong hộp thoại nhóm, chọn hàng hoặc cột và nhấp vào OK.On the Data tab, in the Outline group, click the Group command. In the Group dialog box, select Rows or Columns and click OK .

Bài Viết Liên Quan

Chủ Đề