Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Thông thường, chúng tôi muốn tạo một danh sách chứa một giá trị liên tục như, trong phạm vi 100-200. Hãy để thảo luận về cách tạo một danh sách bằng hàm
my_list = list[range[1, 1001]]
0.>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3Điều này sẽ hoạt động?
As we can see in the output, the result is not exactly what we were expecting because Python does not unpack the result of the range[] function.
1my_list = list[range[1, 1001]]
2 my_list = list[range[1, 1001]]
3my_list = list[range[1, 1001]]
4my_list = list[range[1, 1001]]
5my_list = list[range[1, 1001]]
6my_list = list[range[1, 1001]]
7my_list = list[range[1, 1001]]
8my_list = list[range[1, 1001]]
7my_list = list[range[1, 1001]]
0>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1 We can use argument-unpacking operator i.e. *.>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Đầu ra: Như chúng ta có thể thấy trong đầu ra, kết quả không chính xác là những gì chúng ta mong đợi vì Python không giải nén kết quả của hàm phạm vi [].
>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3Mã số 1: Chúng ta có thể sử dụng toán tử đối số-unpacking, tức là *.
As we can see in the output, the argument-unpacking operator has successfully unpacked the result of the range function.
Code #2 : We can use the
[*range[N]]
8 function to unpack the result of range function.my_list = list[range[1, 1001]]
1my_list = list[range[1, 1001]]
2 my_list = list[range[1, 1001]]
3>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7my_list = list[range[1, 1001]]
4my_list = list[range[1, 1001]]
5my_list = list[range[1, 1001]]
6my_list = list[range[1, 1001]]
7[*range[N]]
22Đầu ra: Như chúng ta có thể thấy trong đầu ra, toán tử phản ứng đối số đã giải nén thành công kết quả của hàm phạm vi. & NBSP; Mã số 2: Chúng ta có thể sử dụng hàm
[*range[N]]
8 để giải nén kết quả của hàm phạm vi.my_list = list[range[1, 1001]]
1my_list = list[range[1, 1001]]
2 [i for i in range[1, 1001]]
1[i for i in range[1, 1001]]
9nums = []
for i in range[1, 1001]:
nums.append[i]
0my_list = list[range[1, 1001]]
4nums = []
for i in range[1, 1001]:
nums.append[i]
2[i for i in range[1, 1001]]
9nums = []
for i in range[1, 1001]:
nums.append[i]
4>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3
2[i for i in range[1, 1001]]
2 my_list = list[range[1, 1001]]
6my_list = list[range[1, 1001]]
7my_list = list[range[1, 1001]]
8my_list = list[range[1, 1001]]
3.0487 Huy hiệu vàng30 Huy hiệu bạc38 Huy hiệu Đồng
some_list = range[1,1000]
Sẽ hoạt động, nhưng trong Python 3, phạm vi tương tự như
nums = []
for i in range[1, 1001]:
nums.append[i]
8 của Python 2?Bất cứ ai có thể cung cấp một số cái nhìn sâu sắc về điều này?
hỏi ngày 14 tháng 7 năm 2012 lúc 0:45Jul 14, 2012 at 0:45
2
Bạn chỉ có thể xây dựng một danh sách từ đối tượng phạm vi:
my_list = list[range[1, 1001]]
Đây là cách bạn làm điều đó với các máy phát điện trong Python2.x. Thông thường, có lẽ bạn không cần một danh sách mặc dù vì bạn có thể nhận được giá trị của
nums = []
for i in range[1, 1001]:
nums.append[i]
9 hiệu quả hơn [range[start, end+1]
[start, start+1, .., end]
0] và nếu bạn chỉ cần lặp lại nó, bạn có thể quay trở lại my_list = list[range[1, 1001]]
4.Cũng lưu ý rằng trên Python2.x,
nums = []
for i in range[1, 1001]:
nums.append[i]
8 vẫn có thể lập chỉ mục1. Điều này có nghĩa là my_list = list[range[1, 1001]]
4 trên Python3.x cũng có cùng một thuộc tính21
range[start, end+1]
[start, start+1, .., end]
4 hoạt động cho Python2.x2 Tuyên bố tương tự thành 1 trong Python3.x là
range[start, end+1]
[start, start+1, .., end]
5 và điều đó cũng hoạt động.Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:48Jul 14, 2012 at 0:48
Mgilsonmgilsonmgilson
289K60 Huy hiệu vàng605 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges605 silver badges676 bronze badges
6
Trong Pythons
Một cách khác, được giới thiệu trong Python
range[start, end+1]
[start, start+1, .., end]
7 với các khái quát giải nén của nó, là bằng cách sử dụng >>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7 trong danh sách theo nghĩa đen [i for i in range[1, 1001]]
1:>>> r = range[10]
>>> l = [*r]
>>> print[l]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Mặc dù điều này tương đương với
my_list = [*range[1001]]
0, nhưng đó là cú pháp theo nghĩa đen và thực tế là không có cuộc gọi chức năng nào liên quan đến phép nó thực hiện nhanh hơn. Nó cũng ít ký tự hơn, nếu bạn cần mã hóa golf :-]Đã trả lời ngày 2 tháng 11 năm 2017 lúc 23:53Nov 2, 2017 at 23:53
2
Trong Python 3.x, hàm
my_list = list[range[1, 1001]]
0 có loại riêng. Vì vậy, trong trường hợp này, bạn phải sử dụng Iterator
my_list = [*range[1001]]
2Đã trả lời ngày 28 tháng 2 năm 2015 lúc 18:38Feb 28, 2015 at 18:38
3
Lý do tại sao Python3 thiếu một chức năng để trực tiếp nhận danh sách tầm xa là vì nhà thiết kế Python3 ban đầu khá mới làm quen trong Python2. Ông chỉ xem xét việc sử dụng hàm
my_list = list[range[1, 1001]]
0 trong một vòng lặp, do đó, danh sách không bao giờ cần phải được mở rộng. Trên thực tế, rất thường xuyên, chúng ta cần sử dụng chức năng my_list = list[range[1, 1001]]
0 để tạo danh sách và chuyển vào một hàm.Do đó, trong trường hợp này, Python3 ít thuận tiện hơn so với Python2 vì:
- Trong Python2, chúng ta có
5 vàmy_list = [*range[1001]]
0;my_list = list[range[1, 1001]]
- Trong Python3, chúng ta có
0 vàmy_list = list[range[1, 1001]]
8my_list = [*range[1001]]
Tuy nhiên, bạn vẫn có thể sử dụng mở rộng danh sách theo cách này:
[*range[N]]
Tế bào thần kinh
4.6044 Huy hiệu vàng32 Huy hiệu bạc53 Huy hiệu Đồng4 gold badges32 silver badges53 bronze badges
Đã trả lời ngày 24 tháng 7 năm 2018 lúc 12:26Jul 24, 2018 at 12:26
xuancong84xuancong84xuancong84
1.09711 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges
3
Bạn thực sự không cần phải sử dụng các số 1-1000 trong danh sách. Nhưng nếu vì một lý do nào đó bạn thực sự cần những con số này, thì bạn có thể làm:
[i for i in range[1, 1001]]
Danh sách hiểu biết một cách ngắn gọn:
Danh sách hiểu biết trên dịch thành:
nums = []
for i in range[1, 1001]:
nums.append[i]
Đây chỉ là cú pháp hiểu danh sách, mặc dù từ 2.x. Tôi biết rằng điều này sẽ hoạt động trong Python 3, nhưng tôi không chắc có cú pháp nâng cấp hay không
Phạm vi bắt đầu bao gồm tham số đầu tiên; nhưng kết thúc, không bao gồm tham số thứ hai [khi được cung cấp 2 tham số; nếu tham số đầu tiên bị bỏ lại, nó sẽ bắt đầu vào lúc '0']Not Including the second Parameter [when supplied 2 parameters; if the first parameter is left off, it'll start at '0']
range[start, end+1]
[start, start+1, .., end]
Sherylhohman
15.1K17 Huy hiệu vàng85 Huy hiệu bạc89 Huy hiệu đồng17 gold badges85 silver badges89 bronze badges
Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:47Jul 14, 2012 at 0:47
inspectorG4dgetinspectorG4dgetinspectorG4dget
106K25 Huy hiệu vàng138 Huy hiệu bạc236 Huy hiệu Đồng25 gold badges138 silver badges236 bronze badges
8
Python 3:
my_list = [*range[1001]]
Elletlar
3.0487 Huy hiệu vàng30 Huy hiệu bạc38 Huy hiệu Đồng7 gold badges30 silver badges38 bronze badges
Đã trả lời ngày 10 tháng 11 năm 2020 lúc 7:40Nov 10, 2020 at 7:40
Karmasankarmasankarmasan
1371 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges
Trên thực tế, nếu bạn muốn 1-1000 [bao gồm], hãy sử dụng hàm
my_list = [*range[1001]]
9 với các tham số 1 và 1001: def get_between_numbers[a, b]:
"""
This function will return in between numbers from two numbers.
:param a:
:param b:
:return:
"""
x = []
if b < a:
x.extend[range[b, a]]
x.append[a]
else:
x.extend[range[a, b]]
x.append[b]
return x
0, vì hàm def get_between_numbers[a, b]:
"""
This function will return in between numbers from two numbers.
:param a:
:param b:
:return:
"""
x = []
if b < a:
x.extend[range[b, a]]
x.append[a]
else:
x.extend[range[a, b]]
x.append[b]
return x
1 đi từ đầu đến [cuối-1], bao gồm.
Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:49Jul 14, 2012 at 0:49
CosmicComputerCosmicComputerCosmicComputer
1.6621 Huy hiệu vàng15 Huy hiệu bạc15 Huy hiệu đồng1 gold badge15 silver badges15 bronze badges
Sử dụng phạm vi trong Python 3.
Dưới đây là một hàm ví dụ trả về giữa các số từ hai số
def get_between_numbers[a, b]:
"""
This function will return in between numbers from two numbers.
:param a:
:param b:
:return:
"""
x = []
if b < a:
x.extend[range[b, a]]
x.append[a]
else:
x.extend[range[a, b]]
x.append[b]
return x
Kết quả
print[get_between_numbers[5, 9]]
print[get_between_numbers[9, 5]]
[5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
Đã trả lời ngày 6 tháng 7 năm 2018 lúc 2:34Jul 6, 2018 at 2:34
Rajiv Sharmarajiv SharmaRajiv Sharma
6.27249 Huy hiệu bạc53 Huy hiệu Đồng49 silver badges53 bronze badges
1
Trên thực tế, đây là một sự tốt nghiệp retro của Python3 so với Python2. Chắc chắn, python2 sử dụng phạm vi [] và xrange [] thuận tiện hơn python3 sử dụng danh sách [phạm vi []] và phạm vi [] tương ứng. Lý do là vì nhà thiết kế ban đầu của Python3 không có kinh nghiệm lắm, họ chỉ coi việc sử dụng chức năng phạm vi của nhiều người mới bắt đầu để lặp lại một số lượng lớn các yếu tố trong đó cả bộ nhớ và CPU không hiệu quả; Nhưng họ đã bỏ qua việc sử dụng hàm phạm vi để tạo ra một danh sách số. Bây giờ, đã quá muộn để họ thay đổi trở lại.
Nếu tôi là nhà thiết kế của Python3, tôi sẽ:
- Sử dụng irange để trả về trình lặp trình tự
- Sử dụng lrange để trả về danh sách trình tự
- Sử dụng phạm vi để trả về một trình lặp trình tự [nếu số lượng phần tử lớn, ví dụ: phạm vi [9999999] hoặc danh sách trình tự [nếu số lượng phần tử nhỏ, ví dụ: phạm vi [10]]
Đó là tối ưu.
Đã trả lời ngày 10 tháng 2 năm 2018 lúc 9:44Feb 10, 2018 at 9:44
xuancong84xuancong84xuancong84
1.09711 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges
2