Tôi được bảo
Viết một hàm, hình vuông [a], lấy một mảng, a, của số và trả về một mảng chứa từng giá trị của một bình phương.
Lúc đầu, tôi đã có
def square[a]:
for i in a: print i**2
Nhưng điều này không hoạt động vì tôi đang in và không trở lại như tôi được hỏi. Vì vậy, tôi đã thử
def square[a]:
for i in a: return i**2
Nhưng điều này chỉ bình phương số lượng cuối cùng của mảng của tôi. Làm thế nào tôi có thể lấy nó để vuông toàn bộ danh sách?
Cœur
358K24 Huy hiệu vàng189 Huy hiệu bạc257 Huy hiệu đồng24 gold badges189 silver badges257 bronze badges
Đã hỏi ngày 23 tháng 9 năm 2012 lúc 19:17Sep 23, 2012 at 19:17
user1692517user1692517user1692517
1.1124 Huy hiệu vàng14 Huy hiệu bạc26 Huy hiệu đồng4 gold badges14 silver badges26 bronze badges
5
Bạn có thể sử dụng danh sách hiểu biết:
def square[list]:
return [i ** 2 for i in list]
Hoặc bạn có thể
def square[list]:
return [i ** 2 for i in list]
0 nó:def square[list]:
return map[lambda x: x ** 2, list]
Hoặc bạn có thể sử dụng một máy phát điện. Nó sẽ không trả lại một danh sách, nhưng bạn vẫn có thể lặp lại thông qua nó và vì bạn không phải phân bổ toàn bộ danh sách mới, nên nó có thể tiết kiệm không gian hơn các tùy chọn khác:
def square[list]:
for i in list:
yield i ** 2
Hoặc bạn có thể thực hiện vòng lặp ____ 21 cũ nhàm chán, mặc dù điều này không thành ngữ như một số lập trình viên Python muốn:
def square[list]:
ret = []
for i in list:
ret.append[i ** 2]
return ret
Đã trả lời ngày 23 tháng 9 năm 2012 lúc 19:22Sep 23, 2012 at 19:22
Waleed Khanwaleed KhanWaleed Khan
11.2k5 Huy hiệu vàng38 Huy hiệu bạc65 Huy hiệu Đồng5 gold badges38 silver badges65 bronze badges
4
Sử dụng danh sách hiểu [đây là cách để đi trong Python thuần túy]:
>>> l = [1, 2, 3, 4]
>>> [i**2 for i in l]
[1, 4, 9, 16]
Hoặc Numpy [một mô-đun được thiết lập tốt]:
>>> numpy.array[[1, 2, 3, 4]]**2
array[[ 1, 4, 9, 16]]
Trong
def square[list]:
return [i ** 2 for i in list]
2, các hoạt động toán học trên các mảng, theo mặc định, được thực hiện theo yếu tố khôn ngoan. Đó là lý do tại sao bạn có thể def square[list]:
return [i ** 2 for i in list]
3 toàn bộ một mảng ở đó.Các giải pháp khả thi khác sẽ là dựa trên ____ 20, nhưng trong trường hợp này tôi thực sự thực sự hiểu được danh sách. Đó là Pythonic :] và một giải pháp dựa trên ____ 20 yêu cầu
def square[list]:
return [i ** 2 for i in list]
6s chậm hơn LC.
Đã trả lời ngày 23 tháng 9 năm 2012 lúc 19:19Sep 23, 2012 at 19:19
import numpy as np
a = [2 ,3, 4]
np.square[a]
Đã trả lời ngày 9 tháng 11 năm 2017 lúc 20:43Nov 9, 2017 at 20:43
user3503711user3503711user3503711
1.2681 Huy hiệu vàng16 Huy hiệu bạc29 Huy hiệu đồng1 gold badge16 silver badges29 bronze badges
Sử dụng Numpy.
import numpy as np
b = list[np.array[a]**2]
Đã trả lời ngày 23 tháng 9 năm 2012 lúc 19:24Sep 23, 2012 at 19:24
Tacaswelltacaswelltacaswell
81.4K20 Huy hiệu vàng206 Huy hiệu bạc193 Huy hiệu Đồng20 gold badges206 silver badges193 bronze badges
4
def square[a]:
for i in a: return i**2
0Đã trả lời ngày 23 tháng 9 năm 2012 lúc 19:20Sep 23, 2012 at 19:20
Thêm một giải pháp bản đồ:
def square[a]:
for i in a: return i**2
1Đã trả lời ngày 20 tháng 10 năm 2012 lúc 19:31Oct 20, 2012 at 19:31
Hendrikhendrikhendrik
1.83216 huy hiệu bạc14 Huy hiệu đồng16 silver badges14 bronze badges
1
def square[a]:
for i in a: return i**2
0Vì vậy, làm thế nào tôi sẽ thực hiện bình phương số từ 1-20 bằng cách sử dụng hàm trên
Mureinik
284K51 Huy hiệu vàng291 Huy hiệu bạc329 Huy hiệu đồng51 gold badges291 silver badges329 bronze badges
Đã trả lời ngày 15 tháng 12 năm 2015 lúc 5:51Dec 15, 2015 at 5:51
0
bạn có thể làm
def square[a]:
for i in a: return i**2
3mà trở lại
def square[a]:
for i in a: return i**2
4hoặc, nếu danh sách đã có giá trị
def square[a]:
for i in a: return i**2
5kết quả trong một danh sách trông giống như:
def square[a]:
for i in a: return i**2
4Lưu ý: Bạn không muốn làm
def square[a]:
for i in a: return i**2
7Vì nó thực sự thêm một danh sách vào danh sách ban đầu, chẳng hạn như:
def square[a]:
for i in a: return i**2
8Đã trả lời ngày 8 tháng 10 năm 2016 lúc 16:06Oct 8, 2016 at 16:06
9 Guy99 Guy
1272 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges
2
def square[a]:
for i in a: return i**2
9
Tomerikoo
16.7K15 Huy hiệu vàng38 Huy hiệu bạc56 Huy hiệu đồng15 gold badges38 silver badges56 bronze badges
Đã trả lời ngày 19 tháng 5 năm 2021 lúc 8:02May 19, 2021 at 8:02
2