Hướng dẫn how do you sum hours in python? - làm thế nào để bạn tính tổng số giờ trong python?

Tôi thực sự thất vọng nếu không có bất kỳ giải pháp pythonic nào nữa ... :(

Show

HORLIBLE MỘT ->

timeList = [ '0:00:00', '0:00:15', '9:30:56' ]

ttt = [map(int,i.split()[-1].split(':')) for i in timeList]
seconds=reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],ttt,0)
#seconds == 34271

Cái này trông cũng thật kinh khủng ->

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'

Thực sự bực bội cũng là điều này ->

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 

Tôi thực sự thích nhìn thấy One-Liner vì vậy, tôi đã cố gắng tạo một cái trong Python3: P (kết quả tốt nhưng nhìn thật kinh khủng)

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'

Hôm nay chúng ta sẽ học cách nhanh chóng thêm các khoảng thời gian khác nhau cho các đối tượng ngày sử dụng ngôn ngữ lập trình Python.

Thêm ngày vào một đối tượng ngày trong Python

Trong ví dụ đầu tiên này, chúng tôi sẽ giả định rằng chúng tôi muốn tính toán ngày bắt đầu dự kiến ​​của một người thuê mới trong công ty hư cấu của chúng tôi.

Chúng ta hãy bắt đầu bằng cách nhập mô -đun DateTime vào môi trường Python của chúng tôi và xác định hai biến: một ngày và thời gian.

import datetime

# define a datetime
sign_date = datetime.date(2022,6, 7)

#define a timedelta representing the employee notice
notice_interval = datetime.timedelta(days = 60)

Bây giờ chúng tôi sẽ tiếp tục và tổng hợp chúng lại với nhau, lưu ý việc sử dụng hàm STR chọn đối tượng ngày để chúng tôi có thể kết hợp nó vào câu lệnh in:

expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))

Chúng tôi sẽ nhận được kết quả sau:

The expected start of this employee is: 2022-08-06

Thêm tháng cho đến ngày trong Python

Điều gì sẽ xảy ra nếu chúng ta muốn tổng hợp tháng cho đến một ngày cụ thể? Phương pháp Timedelta, hỗ trợ tính toán chênh lệch thời gian lên đến mức độ lớn trong tuần. Do đó, để tính toán thời gian đồng bằng trong nhiều tháng hoặc năm, chúng ta nên sử dụng hàm tương đối.

Hãy để sử dụng cùng một dữ liệu như trong đoạn trích trước để minh họa rằng:

from dateutil.relativedelta import relativedelta

sign_date = datetime.date(2022,6, 7)
notice_interval = relativedelta(months = 2)

print('The expected start of this employee is: ' + str(sign_date+notice_interval))

Kết quả tương tự như mong đợi:

The expected start of this employee is: 2022-08-07

Tổng hợp từng giờ vào một datetime trong Python

Theo cùng một kiểu, chúng tôi có thể thêm giờ vào đối tượng DateTime Python. Bây giờ, hãy tính toán thời gian cất cánh dự kiến ​​của chuyến bay của chúng tôi.

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

Điều này sẽ dẫn đến tuyên bố sau:

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
0

Học tập được khuyến nghị bổ sung

  • Làm thế nào để tính toán chênh lệch thời gian với gấu trúc?

Chức năng tích hợp của Python,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 là một cách hiệu quả và pythonic để tổng hợp một danh sách các giá trị số. Thêm một số số lại với nhau là một bước trung gian phổ biến trong nhiều tính toán, vì vậy
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 là một công cụ khá tiện dụng cho một lập trình viên Python.

Là một trường hợp sử dụng bổ sung và thú vị, bạn có thể kết hợp các danh sách và bộ dữ liệu bằng cách sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9, có thể thuận tiện khi bạn cần làm phẳng danh sách danh sách.

Trong hướng dẫn này, bạn sẽ học cách:

  • Tổng các giá trị số bằng tay bằng cách sử dụng các kỹ thuật và công cụ chunggeneral techniques and tools
  • Sử dụng Python từ
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 để thêm một số giá trị số một cách hiệu quảPython’s
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
    to add several numeric values efficiently
  • Danh sách Concatenate và bộ dữ liệu với
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
    with
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
  • Sử dụng
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 để tiếp cận các vấn đề tổng hợp phổ biếnsummation problems
  • Sử dụng các giá trị phù hợp cho các đối số
    The expected start of this employee is: 2022-08-06
    9 và
    arrival_date = datetime.datetime (2002, 7, 8, 10,35)
    
    layover_lenght = datetime.timedelta(hours = 2)
    
    take_off = arrival_date + layover_lenght
    
    
    print('The expected takeoff time is: ' + str(
    take_off))
    
    
    3 trong
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9arguments in
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
  • Quyết định giữa
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 và các công cụ thay thế cho các đối tượng tổng hợp và nốialternative tools to sum and concatenate objects

Với kiến ​​thức này, giờ đây bạn có thể thêm nhiều giá trị số lại với nhau theo cách pythonic, dễ đọc và hiệu quả.

Làm thế nào để bạn thêm giờ trong Python?

Sử dụng lớp TimeDelta () từ mô -đun DateTime để thêm giờ vào DateTime, ví dụ: Kết quả = dt + Timedelta (giờ = 10). Lớp Timedelta có thể được thông qua một đối số giờ và thêm số giờ được chỉ định vào DateTime.

Làm thế nào để bạn tổng hợp hai lần trong Python?

Tổng số thời gian trong câu trả lời mã Python.

Từ DateTime Nhập Timedelta, DateTime ..

current_date_and_time = DateTime. bây giờ().summation problems.

new_time = current_date_and_time + timedelta (phút = 5, giờ = 1).

Làm thế nào để bạn hiển thị giờ ở Python?

Để có được thời gian hiện tại, bạn có thể sử dụng phương thức strftime () và chuyển vào đó, chuỗi Chuỗi%H:%M:%S, đại diện cho giờ, phút và giây.

Làm thế nào để bạn tổng hợp DateTime trong Python?

Cách thêm thời gian vào một đối tượng DateTime trong Python.

Làm thế nào để bạn hiển thị giờ ở Python?

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
2

Để có được thời gian hiện tại, bạn có thể sử dụng phương thức strftime () và chuyển vào đó, chuỗi Chuỗi%H:%M:%S, đại diện cho giờ, phút và giây.

Bạn cũng có thể sử dụng đệ quy thay vì lặp. Recursion là một kỹ thuật lập trình chức năng trong đó một hàm được gọi trong định nghĩa riêng của nó. Nói cách khác, một hàm đệ quy tự gọi nó trong một vòng lặp:

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
3

Khi bạn xác định chức năng đệ quy, bạn có nguy cơ chạy vào một vòng lặp vô hạn. Để ngăn chặn điều này, bạn cần xác định cả trường hợp cơ sở dừng đệ quy và trường hợp đệ quy để gọi hàm và bắt đầu vòng lặp ngầm.base case that stops the recursion and a recursive case to call the function and start the implicit loop.

Trong ví dụ trên, trường hợp cơ sở ngụ ý rằng tổng của danh sách không có độ dài là

expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
0. Trường hợp đệ quy ngụ ý rằng tổng số là giá trị đầu tiên,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
8, cộng với tổng của phần còn lại của các giá trị,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
9. Bởi vì trường hợp đệ quy sử dụng một chuỗi ngắn hơn trên mỗi lần lặp, bạn dự kiến ​​sẽ chạy vào trường hợp cơ sở khi
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
1 là một danh sách có độ dài bằng không. Kết quả cuối cùng, bạn nhận được tổng của tất cả các mục trong danh sách đầu vào của bạn,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
1.

Một tùy chọn khác để tổng hợp danh sách các số trong Python là sử dụng

The expected start of this employee is: 2022-08-06
2 từ
The expected start of this employee is: 2022-08-06
3. Để có được tổng của một danh sách các số, bạn có thể vượt qua
The expected start of this employee is: 2022-08-06
4 hoặc hàm
The expected start of this employee is: 2022-08-06
5 thích hợp làm đối số đầu tiên cho
The expected start of this employee is: 2022-08-06
2:

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
4

Khi bạn xác định chức năng đệ quy, bạn có nguy cơ chạy vào một vòng lặp vô hạn. Để ngăn chặn điều này, bạn cần xác định cả trường hợp cơ sở dừng đệ quy và trường hợp đệ quy để gọi hàm và bắt đầu vòng lặp ngầm.

Trong ví dụ trên, trường hợp cơ sở ngụ ý rằng tổng của danh sách không có độ dài là

expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
0. Trường hợp đệ quy ngụ ý rằng tổng số là giá trị đầu tiên,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
8, cộng với tổng của phần còn lại của các giá trị,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
9. Bởi vì trường hợp đệ quy sử dụng một chuỗi ngắn hơn trên mỗi lần lặp, bạn dự kiến ​​sẽ chạy vào trường hợp cơ sở khi
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
1 là một danh sách có độ dài bằng không. Kết quả cuối cùng, bạn nhận được tổng của tất cả các mục trong danh sách đầu vào của bạn,
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
1.

Một tùy chọn khác để tổng hợp danh sách các số trong Python là sử dụng

The expected start of this employee is: 2022-08-06
2 từ
The expected start of this employee is: 2022-08-06
3. Để có được tổng của một danh sách các số, bạn có thể vượt qua
The expected start of this employee is: 2022-08-06
4 hoặc hàm
The expected start of this employee is: 2022-08-06
5 thích hợp làm đối số đầu tiên cho
The expected start of this employee is: 2022-08-06
2:

Bạn có thể gọi

The expected start of this employee is: 2022-08-06
2 với mức giảm, hoặc gấp,
The expected start of this employee is: 2022-08-06
8 cùng với
The expected start of this employee is: 2022-08-06
9 làm đối số. Sau đó,
The expected start of this employee is: 2022-08-06
2 sử dụng chức năng đầu vào để xử lý
The expected start of this employee is: 2022-08-06
9 và trả về một giá trị tích lũy duy nhất.

Trong ví dụ đầu tiên, hàm giảm là

from dateutil.relativedelta import relativedelta

sign_date = datetime.date(2022,6, 7)
notice_interval = relativedelta(months = 2)

print('The expected start of this employee is: ' + str(sign_date+notice_interval))
2, lấy hai số và thêm chúng lại với nhau. Kết quả cuối cùng là tổng của các số trong đầu vào
The expected start of this employee is: 2022-08-06
9. Như một nhược điểm,
The expected start of this employee is: 2022-08-06
2 tăng
from dateutil.relativedelta import relativedelta

sign_date = datetime.date(2022,6, 7)
notice_interval = relativedelta(months = 2)

print('The expected start of this employee is: ' + str(sign_date+notice_interval))
5 khi bạn gọi nó với một
The expected start of this employee is: 2022-08-06
9 trống.

Trong ví dụ thứ hai, hàm giảm là hàm The expected start of this employee is: 2022-08-065 trả về việc bổ sung hai số.

Vì các tổng như thế này là phổ biến trong lập trình, mã hóa một hàm mới mỗi khi bạn cần tổng hợp một số số là rất nhiều công việc lặp đi lặp lại. Ngoài ra, sử dụng

The expected start of this employee is: 2022-08-06
2 là giải pháp dễ đọc nhất có sẵn cho bạn.

Python cung cấp một chức năng tích hợp chuyên dụng để giải quyết vấn đề này. Hàm được gọi là

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 một cách thuận tiện. Vì nó là một chức năng tích hợp, bạn có thể sử dụng nó trực tiếp trong mã của mình mà không cần nhập bất cứ thứ gì.

Bắt đầu với Python từ

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
5

Khả năng đọc là một trong những nguyên tắc quan trọng nhất đằng sau triết lý Python. Trực quan hóa những gì bạn đang yêu cầu một vòng lặp làm khi tổng hợp một danh sách các giá trị. Bạn muốn nó lặp qua một số số, tích lũy chúng trong một biến trung gian và trả lại tổng cuối cùng. Tuy nhiên, có lẽ bạn có thể tưởng tượng một phiên bản tổng kết dễ đọc hơn mà không cần một vòng lặp. Bạn muốn Python lấy một số số và tổng hợp chúng lại với nhau.

Bây giờ hãy nghĩ về cách

The expected start of this employee is: 2022-08-06
2 không tổng kết. Sử dụng
The expected start of this employee is: 2022-08-06
2 được cho là ít dễ đọc hơn và ít đơn giản hơn so với thậm chí giải pháp dựa trên vòng lặp.

  1. Đây là lý do tại sao Python 2.3 đã thêm
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 như một hàm tích hợp để cung cấp một giải pháp pythonic cho vấn đề tổng kết. Alex Martelli đã đóng góp chức năng, ngày nay là cú pháp ưa thích để tổng hợp danh sách các giá trị:
    is a required argument that can hold any Python iterable. The iterable typically contains numeric values but can also contain lists or tuples.
  2. Ồ! Điều đó gọn gàng, có phải là nó không? Nó đọc giống như tiếng Anh đơn giản và truyền đạt rõ ràng hành động mà bạn đang thực hiện trong danh sách đầu vào. Sử dụng
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 dễ đọc hơn vòng lặp
    import datetime
    
    # define a datetime
    sign_date = datetime.date(2022,6, 7)
    
    #define a timedelta representing the employee notice
    notice_interval = datetime.timedelta(days = 60)
    
    8 hoặc cuộc gọi
    The expected start of this employee is: 2022-08-06
    2. Không giống như
    The expected start of this employee is: 2022-08-06
    2,
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 không tăng
    from dateutil.relativedelta import relativedelta
    
    sign_date = datetime.date(2022,6, 7)
    notice_interval = relativedelta(months = 2)
    
    print('The expected start of this employee is: ' + str(sign_date+notice_interval))
    5 khi bạn cung cấp một khoảng trống có thể trống. Thay vào đó, nó dễ dàng trả về
    expected_start = sign_date+notice_interval
    
    print('The expected start day of this employee is: ' + str(expected_start))
    0.
    is an optional argument that can hold an initial value. This value is then added to the final result. It defaults to
    expected_start = sign_date+notice_interval
    
    print('The expected start day of this employee is: ' + str(expected_start))
    0.

Bạn có thể gọi

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 với hai đối số sau:

The expected start of this employee is: 2022-08-06
9 là một đối số cần thiết có thể giữ bất kỳ python có thể điều chỉnh được. Các thông thường có thể chứa các giá trị số nhưng cũng có thể chứa danh sách hoặc bộ dữ liệu.

arrival_date = datetime.datetime (2002, 7, 8, 10,35) layover_lenght = datetime.timedelta(hours = 2) take_off = arrival_date + layover_lenght print('The expected takeoff time is: ' + str( take_off)) 3 là một đối số tùy chọn có thể giữ giá trị ban đầu. Giá trị này sau đó được thêm vào kết quả cuối cùng. Nó mặc định là expected_start = sign_date+notice_interval print('The expected start day of this employee is: ' + str(expected_start))0.

Trong nội bộ,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 thêm
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3 cộng với các giá trị trong
The expected start of this employee is: 2022-08-06
9 từ trái sang phải. Các giá trị trong đầu vào
The expected start of this employee is: 2022-08-06
9 thường là các số, nhưng bạn cũng có thể sử dụng danh sách và bộ dữ liệu. Đối số tùy chọn
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3 có thể chấp nhận một số, danh sách hoặc tuple, tùy thuộc vào những gì được chuyển cho
The expected start of this employee is: 2022-08-06
9. Nó có thể lấy một chuỗi.

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
6

Trong hai phần sau, bạn sẽ tìm hiểu những điều cơ bản về việc sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 trong mã của mình.

Nếu từ điển của bạn lưu trữ các số trong các giá trị của nó và bạn muốn tổng hợp các giá trị này thay vì các khóa, thì bạn có thể làm điều này bằng cách sử dụng

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
09 giống như trong ví dụ
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
08.

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

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 với danh sách hiểu như một đối số. Ở đây, một ví dụ tính toán tổng của các bình phương của một phạm vi giá trị:

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
7

Python 2.4 đã thêm biểu thức máy phát vào ngôn ngữ. Một lần nữa,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 hoạt động như mong đợi khi bạn sử dụng biểu thức máy phát làm đối số:

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
8

Python 2.4 đã thêm biểu thức máy phát vào ngôn ngữ. Một lần nữa,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 hoạt động như mong đợi khi bạn sử dụng biểu thức máy phát làm đối số:

Ví dụ này cho thấy một trong những kỹ thuật pythonic nhất để tiếp cận vấn đề tổng kết. Nó cung cấp một giải pháp thanh lịch, có thể đọc được và hiệu quả trong một dòng mã duy nhất.

Đối số tùy chọn:

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3

>>>

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
9

Python 2.4 đã thêm biểu thức máy phát vào ngôn ngữ. Một lần nữa,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 hoạt động như mong đợi khi bạn sử dụng biểu thức máy phát làm đối số:

Ví dụ này cho thấy một trong những kỹ thuật pythonic nhất để tiếp cận vấn đề tổng kết. Nó cung cấp một giải pháp thanh lịch, có thể đọc được và hiệu quả trong một dòng mã duy nhất.

Đối số tùy chọn: arrival_date = datetime.datetime (2002, 7, 8, 10,35) layover_lenght = datetime.timedelta(hours = 2) take_off = arrival_date + layover_lenght print('The expected takeoff time is: ' + str( take_off)) 3

Đối số thứ hai và tùy chọn,

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3, cho phép bạn cung cấp một giá trị để khởi tạo quá trình tổng. Đối số này rất tiện dụng khi bạn cần xử lý các giá trị tích lũy theo tuần tự:

Ở đây, bạn cung cấp giá trị ban đầu là

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
15 đến
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3. Hiệu ứng ròng là
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 thêm giá trị này vào tổng tích lũy của các giá trị trong đầu vào. Lưu ý rằng bạn có thể cung cấp
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3 như một đối số vị trí hoặc là đối số từ khóa. Tùy chọn thứ hai là cách rõ ràng hơn và dễ đọc hơn.

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
0

Python 2.4 đã thêm biểu thức máy phát vào ngôn ngữ. Một lần nữa,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 hoạt động như mong đợi khi bạn sử dụng biểu thức máy phát làm đối số:floating-point numbers. It’s worth noting the function’s behavior when you use the special symbols
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
30 and
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
31 in the calls
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
32 and
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
33. The first symbol represents an infinite value, so
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 returns
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
30. The second symbol represents NaN (not a number) values. Since you can’t add numbers with non-numbers, you get
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
31 as a result.

Ví dụ này cho thấy một trong những kỹ thuật pythonic nhất để tiếp cận vấn đề tổng kết. Nó cung cấp một giải pháp thanh lịch, có thể đọc được và hiệu quả trong một dòng mã duy nhất.

Đối số tùy chọn: arrival_date = datetime.datetime (2002, 7, 8, 10,35) layover_lenght = datetime.timedelta(hours = 2) take_off = arrival_date + layover_lenght print('The expected takeoff time is: ' + str( take_off)) 3

Đối số thứ hai và tùy chọn,

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3, cho phép bạn cung cấp một giá trị để khởi tạo quá trình tổng. Đối số này rất tiện dụng khi bạn cần xử lý các giá trị tích lũy theo tuần tự:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
1

Python 2.4 đã thêm biểu thức máy phát vào ngôn ngữ. Một lần nữa,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 hoạt động như mong đợi khi bạn sử dụng biểu thức máy phát làm đối số:

Ví dụ này cho thấy một trong những kỹ thuật pythonic nhất để tiếp cận vấn đề tổng kết. Nó cung cấp một giải pháp thanh lịch, có thể đọc được và hiệu quả trong một dòng mã duy nhất.

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
2

Đối số tùy chọn:

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3

Đối số thứ hai và tùy chọn, arrival_date = datetime.datetime (2002, 7, 8, 10,35) layover_lenght = datetime.timedelta(hours = 2) take_off = arrival_date + layover_lenght print('The expected takeoff time is: ' + str( take_off)) 3, cho phép bạn cung cấp một giá trị để khởi tạo quá trình tổng. Đối số này rất tiện dụng khi bạn cần xử lý các giá trị tích lũy theo tuần tự:

Ở đây, bạn cung cấp giá trị ban đầu là

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
15 đến
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3. Hiệu ứng ròng là
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 thêm giá trị này vào tổng tích lũy của các giá trị trong đầu vào. Lưu ý rằng bạn có thể cung cấp
arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3 như một đối số vị trí hoặc là đối số từ khóa. Tùy chọn thứ hai là cách rõ ràng hơn và dễ đọc hơn.

Nếu bạn không cung cấp giá trị cho

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3, thì nó mặc định là
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
0. Giá trị mặc định là
expected_start = sign_date+notice_interval

print('The expected start day of this employee is: ' + str(expected_start))
0 đảm bảo hành vi dự kiến ​​trả lại tổng số của các giá trị đầu vào.

Tổng giá trị số

Mục đích chính của import functools timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours! sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt))) # sum_fnc(timeList) -> '30:40:11' 9 là cung cấp một cách pythonic để thêm các giá trị số lại với nhau. Cho đến thời điểm này, bạn đã thấy cách sử dụng hàm để tổng số số nguyên. Ngoài ra, bạn có thể sử dụng import functools timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours! sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt))) # sum_fnc(timeList) -> '30:40:11' 9 với bất kỳ loại python số nào khác, chẳng hạn như zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S') ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList] delta=sum(ttt,zero_time)-zero_time # delta==datetime.timedelta(0, 34271) # str(delta)=='9:31:11' # this seems good, but # if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22' 24, zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S') ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList] delta=sum(ttt,zero_time)-zero_time # delta==datetime.timedelta(0, 34271) # str(delta)=='9:31:11' # this seems good, but # if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22' 25, zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S') ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList] delta=sum(ttt,zero_time)-zero_time # delta==datetime.timedelta(0, 34271) # str(delta)=='9:31:11' # this seems good, but # if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22' 26 và zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S') ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList] delta=sum(ttt,zero_time)-zero_time # delta==datetime.timedelta(0, 34271) # str(delta)=='9:31:11' # this seems good, but # if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22' 27.

Dưới đây là một vài ví dụ về việc sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 với các giá trị của các loại số khác nhau:

Ở đây, trước tiên bạn sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 với số điểm nổi. Nó đáng chú ý là hành vi của chức năng khi bạn sử dụng các biểu tượng đặc biệt
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
30 và
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
31 trong các cuộc gọi
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
32 và
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
33. Biểu tượng đầu tiên đại diện cho một giá trị vô hạn, do đó
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 trả về
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
30. Biểu tượng thứ hai đại diện cho các giá trị NAN (không phải số). Vì bạn có thể thêm các số với những người không phải là người, bạn sẽ nhận được
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
31.

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
3

Bằng cách sử dụng

arrival_date = datetime.datetime (2002, 7, 8, 10,35)

layover_lenght = datetime.timedelta(hours = 2)

take_off = arrival_date + layover_lenght


print('The expected takeoff time is: ' + str(
take_off))

3, bạn đặt giá trị ban đầu để khởi tạo tổng, cho phép bạn thêm các đơn vị liên tiếp vào phần phụ được tính toán trước đó. Vào cuối tuần, bạn sẽ có tổng số lượng đơn vị bán của công ty.

Tính toán giá trị trung bình của một mẫu

Một trường hợp sử dụng thực tế khác của

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 là sử dụng nó như một tính toán trung gian trước khi thực hiện các tính toán thêm. Ví dụ, giả sử bạn cần tính toán trung bình số học của một mẫu của các giá trị số. Giá trị trung bình số học, còn được gọi là trung bình, là tổng số của các giá trị chia cho số lượng giá trị hoặc điểm dữ liệu, trong mẫu.average, is the total sum of the values divided by the number of values, or data points, in the sample.

Nếu bạn có mẫu [2, 3, 4, 2, 3, 6, 4, 2] và bạn muốn tính toán trung bình số học bằng tay, thì bạn có thể giải quyết hoạt động này:

(2 + 3 + 4 + 2 + 3 + 6 + 4 + 2) / 8 = 3.25

Nếu bạn muốn tăng tốc độ này bằng cách sử dụng Python, bạn có thể chia nó thành hai phần. Phần đầu tiên của tính toán này, nơi bạn đang thêm các số cùng nhau, là một nhiệm vụ cho

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9. Phần tiếp theo của thao tác, nơi bạn chia cho 8, sử dụng số lượng số trong mẫu của bạn. Để tính toán ước số của bạn, bạn có thể sử dụng
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
60:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
4

Tại đây, cuộc gọi đến

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 tính tổng số điểm dữ liệu trong mẫu của bạn. Tiếp theo, bạn sử dụng
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
60 để có được số lượng điểm dữ liệu. Cuối cùng, bạn thực hiện bộ phận cần thiết để tính toán trung bình số học của mẫu.

Trong thực tế, bạn có thể muốn biến mã này thành một hàm với một số tính năng bổ sung, chẳng hạn như tên mô tả và kiểm tra các mẫu trống:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
5

Bên trong

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
63, trước tiên bạn kiểm tra xem mẫu đầu vào có bất kỳ điểm dữ liệu nào không. Nếu không, thì bạn sẽ tăng một
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
64 với một thông điệp mô tả. Trong ví dụ này, bạn sử dụng toán tử Walrus để lưu trữ số lượng điểm dữ liệu trong biến
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
65 để bạn giành chiến thắng cần phải gọi lại
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
60. Câu lệnh trả về tính toán trung bình số học của mẫu và gửi lại cho mã gọi.

Lưu ý rằng khi bạn gọi

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
63 với một mẫu thích hợp, bạn sẽ nhận được giá trị trung bình mong muốn. Nếu bạn gọi
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
63 với một mẫu trống, thì bạn sẽ nhận được
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
64 như mong đợi.

Tìm sản phẩm chấm của hai chuỗi

Một vấn đề khác bạn có thể giải quyết bằng cách sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 là tìm sản phẩm DOT của hai chuỗi có độ dài bằng nhau của các giá trị số. Sản phẩm DOT là tổng đại số của các sản phẩm của mỗi cặp giá trị trong các chuỗi đầu vào. Ví dụ: nếu bạn có các chuỗi (1, 2, 3) và (4, 5, 6), thì bạn có thể tính toán sản phẩm DOT của họ bằng tay bằng cách sử dụng bổ sung và nhân:

1 × 4 + 2 × 5 + 3 × 6 = 32

Để trích xuất các cặp giá trị liên tiếp từ các chuỗi đầu vào, bạn có thể sử dụng

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
71. Sau đó, bạn có thể sử dụng biểu thức máy phát để nhân mỗi cặp giá trị. Cuối cùng,
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 có thể tổng hợp các sản phẩm:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
6

Với

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
71, bạn tạo một danh sách các bộ dữ liệu với các giá trị từ mỗi chuỗi đầu vào. Các vòng biểu thức của trình tạo trên mỗi tuple trong khi nhân các cặp giá trị liên tiếp được sắp xếp trước đó bởi
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
71. Bước cuối cùng là thêm các sản phẩm với nhau bằng cách sử dụng
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9.

Mã trong ví dụ trên hoạt động. Tuy nhiên, sản phẩm DOT được xác định cho các chuỗi có độ dài bằng nhau, vậy điều gì xảy ra nếu bạn cung cấp các chuỗi với các độ dài khác nhau? Trong trường hợp đó,

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
71 bỏ qua các giá trị bổ sung từ chuỗi dài nhất, dẫn đến kết quả không chính xác.

Để đối phó với khả năng này, bạn có thể kết thúc cuộc gọi đến

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 trong một chức năng tùy chỉnh và cung cấp một kiểm tra thích hợp cho độ dài của các chuỗi đầu vào:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
7

Ở đây,

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
78 lấy hai chuỗi làm đối số và trả về sản phẩm DOT tương ứng của chúng. Nếu các chuỗi đầu vào có độ dài khác nhau, thì hàm tăng
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
64.

Nhúng chức năng vào một chức năng tùy chỉnh cho phép bạn sử dụng lại mã. Nó cũng cung cấp cho bạn cơ hội để đặt tên cho chức năng một cách mô tả để người dùng biết chức năng làm gì chỉ bằng cách đọc tên của nó.

Làm phẳng danh sách các danh sách

Làm phẳng danh sách các danh sách là một nhiệm vụ phổ biến trong Python. Giả sử bạn có một danh sách các danh sách và cần phải làm phẳng nó vào một danh sách duy nhất chứa tất cả các mục từ các danh sách lồng nhau ban đầu. Bạn có thể sử dụng bất kỳ cách tiếp cận nào để làm phẳng danh sách trong Python. Ví dụ: bạn có thể sử dụng vòng lặp

import datetime

# define a datetime
sign_date = datetime.date(2022,6, 7)

#define a timedelta representing the employee notice
notice_interval = datetime.timedelta(days = 60)
8, như trong mã sau:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
8

Bên trong

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
81, vòng lặp lặp lại trên tất cả các danh sách lồng nhau có trong
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
82. Sau đó, nó kết hợp chúng trong
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
83 bằng cách sử dụng một hoạt động gán tăng cường (
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
84). Kết quả là, bạn nhận được một danh sách phẳng với tất cả các mục từ các danh sách lồng nhau ban đầu.

Nhưng hãy giữ! Bạn đã học được cách sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 để nối các chuỗi trong hướng dẫn này. Bạn có thể sử dụng tính năng đó để làm phẳng danh sách các danh sách như bạn đã làm trong ví dụ trên không? Đúng! Đây là cách: làm thế nào:

>>>

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
9

Nó thật nhanh! Một dòng mã duy nhất và

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
86 hiện là một danh sách phẳng. Tuy nhiên, sử dụng
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 không có vẻ là giải pháp nhanh nhất.

Một nhược điểm quan trọng của bất kỳ giải pháp nào ngụ ý sự kết hợp là đằng sau hậu trường, mọi bước trung gian đều tạo ra một danh sách mới. Điều này có thể khá lãng phí về mặt sử dụng bộ nhớ. Danh sách cuối cùng được trả lại chỉ là danh sách được tạo gần đây nhất trong số tất cả các danh sách được tạo ra ở mỗi vòng kết nối. Thay vào đó, sử dụng danh sách hiểu biết rằng bạn tạo và trả về chỉ một danh sách:

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
0

Nó thật nhanh! Một dòng mã duy nhất và

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
86 hiện là một danh sách phẳng. Tuy nhiên, sử dụng
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 không có vẻ là giải pháp nhanh nhất.

Một nhược điểm quan trọng của bất kỳ giải pháp nào ngụ ý sự kết hợp là đằng sau hậu trường, mọi bước trung gian đều tạo ra một danh sách mới. Điều này có thể khá lãng phí về mặt sử dụng bộ nhớ. Danh sách cuối cùng được trả lại chỉ là danh sách được tạo gần đây nhất trong số tất cả các danh sách được tạo ra ở mỗi vòng kết nối. Thay vào đó, sử dụng danh sách hiểu biết rằng bạn tạo và trả về chỉ một danh sách:

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
1

Nó thật nhanh! Một dòng mã duy nhất và

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
86 hiện là một danh sách phẳng. Tuy nhiên, sử dụng
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 không có vẻ là giải pháp nhanh nhất.

Một nhược điểm quan trọng của bất kỳ giải pháp nào ngụ ý sự kết hợp là đằng sau hậu trường, mọi bước trung gian đều tạo ra một danh sách mới. Điều này có thể khá lãng phí về mặt sử dụng bộ nhớ. Danh sách cuối cùng được trả lại chỉ là danh sách được tạo gần đây nhất trong số tất cả các danh sách được tạo ra ở mỗi vòng kết nối. Thay vào đó, sử dụng danh sách hiểu biết rằng bạn tạo và trả về chỉ một danh sách:

Phiên bản mới này của

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
81 hiệu quả hơn và ít lãng phí hơn về mặt sử dụng bộ nhớ. Tuy nhiên, các toàn diện lồng nhau có thể là một thách thức để đọc và hiểu.

Sử dụng

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
89 có lẽ là cách dễ đọc và pythonic nhất để làm phẳng danh sách danh sách:

Trong phiên bản

zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
81 này, ai đó đang đọc mã của bạn có thể thấy rằng chức năng lặp lại trên mỗi
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
91 trong
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
82. Bên trong vòng
import datetime

# define a datetime
sign_date = datetime.date(2022,6, 7)

#define a timedelta representing the employee notice
notice_interval = datetime.timedelta(days = 60)
8 đầu tiên này, nó đã lặp lại trên mỗi
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
94 trong
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
91 để cuối cùng đưa ra danh sách
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
83 mới với
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
89. Giống như sự hiểu biết từ trước đó, giải pháp này chỉ tạo ra một danh sách trong quy trình. Một lợi thế của giải pháp này là nó rất dễ đọc.

Sử dụng các lựa chọn thay thế cho import functools timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours! sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt))) # sum_fnc(timeList) -> '30:40:11' 9

Như bạn đã học,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 rất hữu ích khi làm việc với các giá trị số nói chung. Tuy nhiên, khi nói đến việc làm việc với các số điểm nổi, Python cung cấp một công cụ thay thế. Trong
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
00, bạn sẽ tìm thấy một hàm gọi là
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
01 có thể giúp bạn cải thiện độ chính xác chung của các tính toán dấu phẩy động của bạn.

Bạn có thể có một nhiệm vụ mà bạn muốn kết hợp hoặc chuỗi một số lần lặp để bạn có thể làm việc với chúng như một. Đối với kịch bản này, bạn có thể tìm đến chức năng mô -đun

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
02
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
03.

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
2

Bạn cũng có thể có một nhiệm vụ mà bạn muốn kết hợp một danh sách các chuỗi. Bạn đã học được trong hướng dẫn này rằng không có cách nào để sử dụng

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 để nối các chuỗi. Chức năng này chỉ được xây dựng để kết hợp chuỗi. Giải pháp thay thế pythonic nhất là sử dụng
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
49.

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
3

Tổng số điểm nổi:

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
06

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
4

Nếu mã của bạn liên tục tổng số các số điểm nổi với

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9, thì bạn nên xem xét sử dụng
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
06 thay thế. Hàm này thực hiện các tính toán dấu phẩy động cẩn thận hơn
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9, giúp cải thiện độ chính xác của tính toán của bạn.

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
5

Theo tài liệu của mình,

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
01 Tránh mất độ chính xác bằng cách theo dõi nhiều khoản tiền trung gian. Tài liệu cung cấp ví dụ sau:

Với sum(ttt,zero_time).strftime('%H:%M:%S') # it is only "modulo" 24 :( 01, bạn nhận được một kết quả chính xác hơn. Tuy nhiên, bạn nên lưu ý rằng sum(ttt,zero_time).strftime('%H:%M:%S') # it is only "modulo" 24 :( 01 không giải quyết được lỗi đại diện trong số học dấu phẩy động. Ví dụ sau đây khám phá giới hạn này:

Trong các ví dụ này, cả hai chức năng trả về cùng một kết quả. Điều này là do sự bất khả thi của việc thể hiện chính xác cả hai giá trị

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
13 và
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
14 trong điểm nổi nhị phân:

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
6

Tuy nhiên, không giống như

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9,
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
01 có thể giúp bạn giảm sự lan truyền lỗi dấu phẩy động khi bạn thêm các số rất lớn và rất nhỏ lại với nhau:

Ồ! Ví dụ thứ hai là khá đáng ngạc nhiên và hoàn toàn đánh bại

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9. Với
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9, kết quả là bạn nhận được
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
19. Điều này khá xa so với kết quả chính xác của
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
20, khi bạn nhận được với
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
01.

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
7

Kết nối lặp lại với

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
22iterable unpacking operator (
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
31). This operator unpacks all the input iterables so that
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
03 can work with them and generate the corresponding iterator. The final step is to call
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
28 to build the desired flat list.

Dây nối với zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S') ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList] delta=sum(ttt,zero_time)-zero_time # delta==datetime.timedelta(0, 34271) # str(delta)=='9:31:11' # this seems good, but # if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22' 49

Như bạn đã thấy,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 không liên kết hoặc tham gia chuỗi. Nếu bạn cần phải làm như vậy, thì công cụ ưa thích và nhanh nhất có sẵn trong Python là
zero_time = datetime.datetime.strptime('0:0:0', '%H:%M:%S')
ttt=[datetime.datetime.strptime(i, '%H:%M:%S')-zero_time for i in timeList]
delta=sum(ttt,zero_time)-zero_time
# delta==datetime.timedelta(0, 34271)

# str(delta)=='9:31:11' # this seems good, but 
# if we have more than 1 day we get for example str(delta)=='1 day, 1:05:22'
49. Phương pháp này lấy một chuỗi các chuỗi làm đối số và trả về một chuỗi mới, được nối:

>>>

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
8

Sử dụng

sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
37 là cách hiệu quả nhất và pythonic để nối các chuỗi. Ở đây, bạn sử dụng một danh sách các chuỗi làm đối số và xây dựng một chuỗi duy nhất từ ​​đầu vào. Lưu ý rằng
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
37 sử dụng chuỗi mà bạn gọi phương thức làm dấu phân cách trong quá trình ghép. Trong ví dụ này, bạn gọi
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
37 trên một chuỗi bao gồm một ký tự không gian duy nhất (
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
40), do đó các chuỗi gốc từ
sum(ttt,zero_time).strftime('%H:%M:%S')  # it is only "modulo" 24 :( 
41 được phân tách bằng khoảng trắng trong chuỗi cuối cùng của bạn.

Sự kết luận

Bây giờ bạn có thể sử dụng chức năng tích hợp Python,

import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 để thêm nhiều giá trị số lại với nhau. Hàm này cung cấp một cách hiệu quả, dễ đọc và pythonic để giải quyết các vấn đề tổng trong mã của bạn. Nếu bạn xử lý các tính toán toán học yêu cầu tổng các giá trị số, thì
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 có thể là cứu cánh của bạn.summation problems in your code. If you’re dealing with math computations that require summing numeric values, then
import functools
timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
# sum_fnc(timeList) -> '30:40:11'
9 can be your lifesaver.

Trong hướng dẫn này, bạn đã học được cách:

  • Tổng các giá trị số bằng các kỹ thuật và công cụ chunggeneral techniques and tools
  • Thêm một số giá trị số một cách hiệu quả bằng cách sử dụng Python từ
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9Python’s
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
  • Trình tự Concatenate sử dụng
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
    using
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
  • Sử dụng
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 để tiếp cận các vấn đề tổng hợp phổ biếnsummation problems
  • Sử dụng các giá trị phù hợp cho các đối số
    The expected start of this employee is: 2022-08-06
    9 và
    arrival_date = datetime.datetime (2002, 7, 8, 10,35)
    
    layover_lenght = datetime.timedelta(hours = 2)
    
    take_off = arrival_date + layover_lenght
    
    
    print('The expected takeoff time is: ' + str(
    take_off))
    
    
    3 trong
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
    The expected start of this employee is: 2022-08-06
    9 and
    arrival_date = datetime.datetime (2002, 7, 8, 10,35)
    
    layover_lenght = datetime.timedelta(hours = 2)
    
    take_off = arrival_date + layover_lenght
    
    
    print('The expected takeoff time is: ' + str(
    take_off))
    
    
    3 arguments
    in
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9
  • Quyết định giữa
    import functools
    timeList = ['0:00:00','0:00:15','9:30:56','21:00:00'] # notice additional 21 hours!
    sum_fnc=lambda ttt:(lambda a:'%02d:%02d:%02d' % (divmod(divmod(a,60)[0],60)+(divmod(a,60)[1],)))((lambda a:functools.reduce(lambda x,y:x+y[0]*3600+y[1]*60+y[2],a,0))((lambda a:[list(map(int,i.split()[-1].split(':'))) for i in a])(ttt)))
    # sum_fnc(timeList) -> '30:40:11'
    
    9 và các công cụ thay thế cho các đối tượng tổng hợp và nốialternative tools to sum and concatenate objects

Với kiến ​​thức này, giờ đây bạn có thể thêm nhiều giá trị số lại với nhau theo cách pythonic, dễ đọc và hiệu quả.

Làm thế nào để bạn thêm giờ trong Python?

Sử dụng lớp TimeDelta () từ mô -đun DateTime để thêm giờ vào DateTime, ví dụ:Kết quả = dt + Timedelta (giờ = 10).Lớp Timedelta có thể được thông qua một đối số giờ và thêm số giờ được chỉ định vào DateTime., e.g. result = dt + timedelta(hours=10) . The timedelta class can be passed a hours argument and adds the specified number of hours to the datetime.

Làm thế nào để bạn tổng hợp hai lần trong Python?

Tổng số thời gian trong câu trả lời mã Python..
Từ DateTime Nhập Timedelta, DateTime ..
current_date_and_time = DateTime.bây giờ().
new_time = current_date_and_time + timedelta (phút = 5, giờ = 1).
print(new_time).

Làm thế nào để bạn hiển thị giờ ở Python?

Để có được thời gian hiện tại, bạn có thể sử dụng phương thức strftime () và chuyển vào đó, chuỗi Chuỗi%H:%M:%S, đại diện cho giờ, phút và giây.use the strftime() method and pass into it the string ”%H:%M:%S” representing hours, minutes, and seconds.

Làm thế nào để bạn tổng hợp DateTime trong Python?

Cách thêm thời gian vào một đối tượng DateTime trong Python..
date_and_time = DateTime.DateTime (2020, 2, 19, 12, 0, 0).
print(date_and_time).
Time_change = DateTime.Timedelta (giờ = 10).
new_time = date_and_time + time_change ..
print(new_time).