254
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.
Làm thế nào để bạn tìm thấy trung bình của một danh sách trong Python? Danh sách có thể có bất kỳ kích thước nào và các số không được đảm bảo là theo bất kỳ thứ tự cụ thể nào.
Nếu danh sách chứa số lượng phần tử chẵn, hàm sẽ trả về trung bình của hai phần giữa.
Dưới đây là một số ví dụ [được sắp xếp cho mục đích hiển thị]:
median[[1]] == 1
median[[1, 1]] == 1
median[[1, 1, 2, 4]] == 1.5
median[[0, 2, 5, 6, 8, 9, 9]] == 6
median[[0, 0, 0, 0, 4, 4, 6, 8]] == 2
Veedrac
55,9K14 Huy hiệu vàng109 Huy hiệu bạc166 Huy hiệu Đồng14 gold badges109 silver badges166 bronze badges
Đã hỏi ngày 7 tháng 6 năm 2014 lúc 21:04Jun 7, 2014 at 21:04
2
Python 3.4 có
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
7:Trả về trung bình [giá trị trung bình] của dữ liệu số.
Khi số lượng điểm dữ liệu là lẻ, hãy trả về điểm dữ liệu giữa. Khi số lượng điểm dữ liệu là chẵn, trung bình được nội suy bằng cách lấy trung bình của hai giá trị trung bình:
>>> median[[1, 3, 5]] 3 >>> median[[1, 3, 5, 7]] 4.0
Usage:
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
Nó cũng khá cẩn thận với các loại:
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
Đã trả lời ngày 8 tháng 6 năm 2014 lúc 0:08Jun 8, 2014 at 0:08
VeedracveedracVeedrac
55,9K14 Huy hiệu vàng109 Huy hiệu bạc166 Huy hiệu Đồng14 gold badges109 silver badges166 bronze badges
3
Đã hỏi ngày 7 tháng 6 năm 2014 lúc 21:04python-2.x]:
def median[lst]:
n = len[lst]
s = sorted[lst]
return [s[n//2-1]/2.0+s[n//2]/2.0, s[n//2]][n % 2] if n else None
>>> median[[-5, -5, -3, -4, 0, -1]]
-3.5
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
8:>>> from numpy import median
>>> median[[1, -4, -1, -1, 1, -3]]
-1.0
Python 3.4 có
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
7:>>> from statistics import median
>>> median[[5, 2, 3, 8, 9, -2]]
4.0
Trả về trung bình [giá trị trung bình] của dữ liệu số.Jun 7, 2014 at 23:33
Khi số lượng điểm dữ liệu là lẻ, hãy trả về điểm dữ liệu giữa. Khi số lượng điểm dữ liệu là chẵn, trung bình được nội suy bằng cách lấy trung bình của hai giá trị trung bình:A.J. Uppal
Nó cũng khá cẩn thận với các loại:6 gold badges41 silver badges74 bronze badges
7
Đã trả lời ngày 8 tháng 6 năm 2014 lúc 0:08
def median[lst]:
sortedLst = sorted[lst]
lstLen = len[lst]
index = [lstLen - 1] // 2
if [lstLen % 2]:
return sortedLst[index]
else:
return [sortedLst[index] + sortedLst[index + 1]]/2.0
Veedracveedrac
[Hoạt động với Python-2.x]:16 gold badges44 silver badges62 bronze badges
Đối với Python-3.x, hãy sử dụng
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
7:Jun 7, 2014 at 22:09
Đã trả lời ngày 7 tháng 6 năm 2014 lúc 23:33swolfe
A.J. Uppala.J. Uppal5 silver badges8 bronze badges
2
Phim thương hiệu vàng 18,7K6
def median[data]:
data.sort[]
mid = len[data] // 2
return [data[mid] + data[~mid]] / 2
Hàm
def median[lst]:
n = len[lst]
s = sorted[lst]
return [s[n//2-1]/2.0+s[n//2]/2.0, s[n//2]][n % 2] if n else None
0 rất hữu ích cho việc này. Sử dụng hàm được sắp xếp để đặt hàng danh sách, sau đó chỉ cần trả về giá trị giữa [hoặc trung bình hai giá trị giữa nếu danh sách chứa số lượng phần tử chẵn].Jan 21, 2018 at 17:22
vvvvvVlad Bezden
19.1K16 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu đồng23 gold badges240 silver badges176 bronze badges
Đã trả lời ngày 7 tháng 6 năm 2014 lúc 22:09
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
0Swolfeswolfe
8865 Huy hiệu bạc8 Huy hiệu Đồng
Tất nhiên bạn có thể sử dụng các chức năng xây dựng trong các chức năng, nhưng nếu bạn muốn tạo riêng bạn, bạn có thể làm một cái gì đó như thế này. Bí quyết ở đây là sử dụng ~ toán tử lật số dương sang âm. Chẳng hạn ~ 2 -> -3 và sử dụng tiêu cực trong danh sách trong Python sẽ đếm các mục từ cuối. Vì vậy, nếu bạn có mid == 2 thì nó sẽ lấy phần tử thứ ba từ mục đầu và thứ ba từ cuối.12 gold badges32 silver badges42 bronze badges
Đã trả lời ngày 21 tháng 1 năm 2018 lúc 17:22Apr 25, 2015 at 20:18
2
Vlad Bezdenvlad Bezden
76.7K23 Huy hiệu vàng240 Huy hiệu bạc176 Huy hiệu đồng
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
1Đây là một giải pháp sạch hơn:
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
2Lưu ý: Câu trả lời đã thay đổi để kết hợp gợi ý trong bình luận.
SihaJun 8, 2014 at 0:49
VeedracveedracVeedrac
55,9K14 Huy hiệu vàng109 Huy hiệu bạc166 Huy hiệu Đồng14 gold badges109 silver badges166 bronze badges
2
Đã hỏi ngày 7 tháng 6 năm 2014 lúc 21:04
Python 3.4 có
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
7:>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
3Trả về trung bình [giá trị trung bình] của dữ liệu số.Jun 7, 2014 at 22:48
5
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
4
Khi số lượng điểm dữ liệu là lẻ, hãy trả về điểm dữ liệu giữa. Khi số lượng điểm dữ liệu là chẵn, trung bình được nội suy bằng cách lấy trung bình của hai giá trị trung bình:
Nó cũng khá cẩn thận với các loại:1 gold badge35 silver badges52 bronze badges
Đã trả lời ngày 8 tháng 6 năm 2014 lúc 0:08Sep 25, 2018 at 18:22
VeedracveedracBulent
[Hoạt động với Python-2.x]:1 silver badge1 bronze badge
0
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
5Đối với Python-3.x, hãy sử dụng
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
7:Mar 4, 2016 at 11:50
Đã trả lời ngày 7 tháng 6 năm 2014 lúc 23:33warvariuc
A.J. Uppala.J. Uppal36 gold badges167 silver badges226 bronze badges
Phim thương hiệu vàng 18,7K6
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
6Hàm
def median[lst]:
n = len[lst]
s = sorted[lst]
return [s[n//2-1]/2.0+s[n//2]/2.0, s[n//2]][n % 2] if n else None
0 rất hữu ích cho việc này. Sử dụng hàm được sắp xếp để đặt hàng danh sách, sau đó chỉ cần trả về giá trị giữa [hoặc trung bình hai giá trị giữa nếu danh sách chứa số lượng phần tử chẵn].>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
7vvvvv
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
8
19.1K16 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu đồng
Đã trả lời ngày 7 tháng 6 năm 2014 lúc 22:0915 gold badges153 silver badges134 bronze badges
SwolfeswolfeJul 5, 2020 at 23:16
8865 Huy hiệu bạc8 Huy hiệu ĐồngThe AG
Tất nhiên bạn có thể sử dụng các chức năng xây dựng trong các chức năng, nhưng nếu bạn muốn tạo riêng bạn, bạn có thể làm một cái gì đó như thế này. Bí quyết ở đây là sử dụng ~ toán tử lật số dương sang âm. Chẳng hạn ~ 2 -> -3 và sử dụng tiêu cực trong danh sách trong Python sẽ đếm các mục từ cuối. Vì vậy, nếu bạn có mid == 2 thì nó sẽ lấy phần tử thứ ba từ mục đầu và thứ ba từ cuối.8 silver badges17 bronze badges
0
Đã trả lời ngày 21 tháng 1 năm 2018 lúc 17:22
Vlad Bezdenvlad Bezden
>>> median[[1, 3, 5]]
3
>>> median[[1, 3, 5, 7]]
4.0
9
76.7K23 Huy hiệu vàng240 Huy hiệu bạc176 Huy hiệu đồngJan 21, 2016 at 0:00
0
Đây là một giải pháp sạch hơn:
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
0Lưu ý: Câu trả lời đã thay đổi để kết hợp gợi ý trong bình luận.Apr 22, 2020 at 12:07
Gabriel123Gabriel123Gabriel123
Siha4 silver badges10 bronze badges
7.19112 Huy hiệu vàng32 Huy hiệu bạc42 Huy hiệu đồng
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
1Đã trả lời ngày 25 tháng 4 năm 2015 lúc 20:18May 27, 2016 at 8:52
Bạn có thể thử thuật toán QuickSelect nếu thời gian chạy trường hợp trung bình nhanh hơn là cần thiết. QuickSelect có hiệu suất trường hợp trung bình [và tốt nhất]
def median[lst]:
n = len[lst]
s = sorted[lst]
return [s[n//2-1]/2.0+s[n//2]/2.0, s[n//2]][n % 2] if n else None
1, mặc dù nó có thể kết thúc def median[lst]:
n = len[lst]
s = sorted[lst]
return [s[n//2-1]/2.0+s[n//2]/2.0, s[n//2]][n % 2] if n else None
2 vào một ngày tồi tệ.import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
2
19.1K16 Huy hiệu vàng44 Huy hiệu bạc62 Huy hiệu đồng
Đã trả lời ngày 7 tháng 6 năm 2014 lúc 22:0915 gold badges153 silver badges134 bronze badges
Đã trả lời ngày 17 tháng 9 năm 2020 lúc 2:32Sep 17, 2020 at 2:32
Rt.TongRt.TongRt.Tong
1672 Huy hiệu bạc5 Huy hiệu Đồng2 silver badges5 bronze badges
chức năng trung bình
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
3Đã trả lời ngày 21 tháng 5 năm 2015 lúc 13:55May 21, 2015 at 13:55
Tôi đã có một số vấn đề với danh sách các giá trị nổi. Cuối cùng tôi đã sử dụng đoạn mã từ Thống kê Python3.Median và đang làm việc hoàn hảo với các giá trị nổi mà không cần nhập. nguồn
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
4Đã trả lời ngày 3 tháng 5 năm 2017 lúc 16:54May 3, 2017 at 16:54
DandanDan
7171 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng1 gold badge7 silver badges19 bronze badges
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
5Đã trả lời ngày 18 tháng 2 năm 2018 lúc 18:00Feb 18, 2018 at 18:00
vk123vk123vk123
Phù hiệu bằng đồng 2133 bronze badges
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
6
Đã trả lời ngày 6 tháng 4 năm 2018 lúc 21:55Apr 6, 2018 at 21:55
3
Tôi đã xác định hàm trung bình cho một danh sách các số là
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
7Đã trả lời ngày 14 tháng 10 năm 2014 lúc 14:12Oct 14, 2014 at 14:12
1
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
8Đã trả lời ngày 26 tháng 8 năm 2019 lúc 7:12Aug 26, 2019 at 7:12
Một cách tiếp cận tổng quát hơn cho trung bình [và phần trăm] sẽ là:
import statistics
items = [6, 1, 8, 2, 3]
statistics.median[items]
#>>> 3
9Đã trả lời ngày 7 tháng 5 năm 2020 lúc 19:46May 7, 2020 at 19:46
Conmakconmakconmak
1.0128 Huy hiệu bạc13 Huy hiệu đồng8 silver badges13 bronze badges
Thử cái này
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
0Đã trả lời ngày 20 tháng 12 năm 2021 lúc 13:32Dec 20, 2021 at 13:32
0xN1nja0xN1nja0xN1nja
8085 Huy hiệu bạc13 Huy hiệu Đồng5 silver badges13 bronze badges
1
Thực hiện nó:
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
1Nguồn từ
Asclepius
52.4K15 Huy hiệu vàng153 Huy hiệu bạc134 Huy hiệu đồng15 gold badges153 silver badges134 bronze badges
Đã trả lời ngày 4 tháng 10 năm 2020 lúc 16:36Oct 4, 2020 at 16:36
Duyuanchaoduyuanchaoduyuanchao
3,47324 Huy hiệu bạc15 Huy hiệu đồng24 silver badges15 bronze badges
Chức năng trung bình::
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
2
Đã trả lời ngày 15 tháng 2 năm 2020 lúc 11:03Feb 15, 2020 at 11:03
1
Đơn giản, hãy tạo một hàm trung bình với một đối số như một danh sách số và gọi hàm.
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
3
Asclepius
52.4K15 Huy hiệu vàng153 Huy hiệu bạc134 Huy hiệu đồng15 gold badges153 silver badges134 bronze badges
Đã trả lời ngày 4 tháng 10 năm 2020 lúc 16:36Apr 27, 2021 at 5:17
Duyuanchaoduyuanchao
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
43,47324 Huy hiệu bạc15 Huy hiệu đồng Basically if the number of items in the list is odd, return the middle number, otherwise, if you half an even list, python automatically rounds the higher number so we know the number before that will be one less [since we sorted it] and we can add the default higher number and the number lower than it and divide them by 2 to find the median.
Asclepius
52.4K15 Huy hiệu vàng153 Huy hiệu bạc134 Huy hiệu đồng15 gold badges153 silver badges134 bronze badges
Đã trả lời ngày 4 tháng 10 năm 2020 lúc 16:36Nov 6, 2020 at 6:31
1
Duyuanchaoduyuanchao
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
53,47324 Huy hiệu bạc15 Huy hiệu đồngJan 24, 2017 at 19:05
Chức năng trung bình:I Like
Đã trả lời ngày 15 tháng 2 năm 2020 lúc 11:032 gold badges20 silver badges41 bronze badges
2
Đơn giản, hãy tạo một hàm trung bình với một đối số như một danh sách số và gọi hàm.
statistics.median[map[float, items]]
#>>> 3.0
from decimal import Decimal
statistics.median[map[Decimal, items]]
#>>> Decimal['3']
6Đã trả lời ngày 27 tháng 4 năm 2021 lúc 5:17
Những gì tôi đã làm là thế này:Dec 7, 2018 at 16:11
Giải thích: Về cơ bản nếu số lượng mục trong danh sách là số lẻ, hãy trả lại số giữa, nếu không, nếu bạn một nửa danh sách, Python tự động làm tròn số cao hơn để chúng tôi biết số trước đó sẽ ít hơn [vì chúng tôi đã sắp xếp nó ] và chúng tôi có thể thêm số cao hơn mặc định và số thấp hơn nó và chia chúng cho 2 để tìm trung vị.Farhan
Đã trả lời ngày 6 tháng 11 năm 2020 lúc 6:3115 silver badges22 bronze badges
2