Tôi khá mới với Python, vì vậy tôi đang làm việc thông thường của mình để trải qua Project Euler để tìm ra những nút thắt logic trong đầu.
Về cơ bản, tôi cần kích thước danh sách lớn nhất có thể, phạm vi IE [1, n], mà không tràn.
Bất kỳ ý tưởng?
hỏi ngày 14 tháng 7 năm 2010 lúc 15:48Jul 14, 2010 at 15:48
2
Nhìn vào get_len_of_range và get_len_of_range_longs trong nguồn mô -đun tích hợp
Tóm tắt: Bạn sẽ nhận được một dòng điện nếu danh sách có nhiều yếu tố hơn có thể phù hợp với một chữ ký dài. Trên Python 32 bit đó là 2**31 - 1
, và trên 64 bit Python đó là 2**63 - 1
. Tất nhiên, bạn sẽ nhận được một bộ nhớerror ngay cả đối với các giá trị ngay dưới đó.
Đã trả lời ngày 14 tháng 7 năm 2010 lúc 15:56Jul 14, 2010 at 15:56
Devin Jeanpierredevin JeanpierreDevin Jeanpierre
90.3k4 Huy hiệu vàng55 Huy hiệu bạc79 Huy hiệu đồng4 gold badges55 silver badges79 bronze badges
2
Kích thước danh sách của bạn chỉ bị giới hạn bởi bộ nhớ của bạn. Lưu ý rằng, tùy thuộc vào phiên bản Python của bạn, range[1, 9999999999999999]
chỉ cần một vài byte RAM vì nó luôn chỉ tạo ra một yếu tố duy nhất của danh sách ảo mà nó trả về.
Nếu bạn muốn khởi tạo danh sách, hãy sử dụng
range[start, stop, step]
0 [điều này sẽ sao chép danh sách ảo].Đã trả lời ngày 14 tháng 7 năm 2010 lúc 15:52Jul 14, 2010 at 15:52
Aaron Digullaaaron DigullaAaron Digulla
315K104 Huy hiệu vàng583 Huy hiệu bạc808 Huy hiệu đồng104 gold badges583 silver badges808 bronze badges
3
Hàm
range[start, stop, step]
1 trả về một chuỗi các số giữa phạm vi cho.Thí dụ
# create a sequence of numbers from 0 to 3
numbers = range[4]
# iterating through the sequence of numbers
for i in numbers:
print[i]
# Output:
# 0
# 1
# 2
# 3
Lưu ý:
1 Trả về một chuỗi các số bất biến có thể dễ dàng chuyển đổi thành danh sách, bộ dữ liệu, bộ, v.v. range[start, stop, step]
range[start, stop, step]
1 returns an immutable sequence of numbers that can be easily converted to lists, tuples, sets etc.Cú pháp của phạm vi []
Hàm
range[start, stop, step]
1 có thể mất tối đa ba đối số:range[start, stop, step]
Các tham số
range[start, stop, step]
4 và range[start, stop, step]
5 trong range[start, stop, step]
1 là tùy chọn.Bây giờ, hãy xem cách
range[start, stop, step]
1 hoạt động với số lượng đối số khác nhau.Ví dụ 1: phạm vi [] với đối số dừng
Nếu chúng ta chuyển một đối số duy nhất cho
range[start, stop, step]
1, điều đó có nghĩa là chúng ta đang vượt qua đối số range[start, stop, step]
9.Trong trường hợp này,
range[start, stop, step]
1 trả về một chuỗi các số bắt đầu từ 0 đến số [nhưng không bao gồm số].0 up to the number [but not including the number].# numbers from 0 to 3 [4 is not included]
numbers = range[4]
print[list[numbers]] # [0, 1, 2, 3]
# if 0 or negative number is passed, we get an empty sequence
numbers = range[-4]
print[list[numbers]] # []
Ví dụ 2: phạm vi [] với các đối số bắt đầu và dừng
Nếu chúng ta chuyển hai đối số cho
range[start, stop, step]
1, điều đó có nghĩa là chúng ta đang thông qua các đối số range[start, stop, step]
4 và range[start, stop, step]
9.Trong trường hợp này,
range[start, stop, step]
1 trả về một chuỗi các số bắt đầu từ range[start, stop, step]
4 [bao gồm] lên đến range[start, stop, step]
9 [độc quyền].# numbers from 2 to 4 [5 is not included]
numbers = range[2, 5]
print[list[numbers]] # [2, 3, 4]
# numbers from -2 to 3 [4 is not included]
numbers = range[-2, 4]
print[list[numbers]] # [-2, -1, 0, 1, 2, 3]
# returns an empty sequence of numbers
numbers = range[4, 2]
print[list[numbers]] # []
Ví dụ 3: phạm vi [] với các đối số bắt đầu, dừng và bước
Nếu chúng ta vượt qua cả ba đối số,
- Đối số đầu tiên là
4range[start, stop, step]
- Đối số thứ hai là
9range[start, stop, step]
- Đối số thứ ba là
5range[start, stop, step]
Đối số
range[start, stop, step]
5 chỉ định sự gia tăng giữa hai số trong chuỗi.# numbers from 2 to 10 with increment 3 between numbers
numbers = range[2, 10, 3]
print[list[numbers]] # [2, 5, 8]
# numbers from 4 to -1 with increment of -1
numbers = range[4, -1, -1]
print[list[numbers]] # [4, 3, 2, 1, 0]
# numbers from 1 to 4 with increment of 1
# range[0, 5, 1] is equivalent to range[5]
numbers = range[0, 5, 1]
print[list[numbers]] # [0, 1, 2, 3, 4]
Lưu ý: Giá trị mặc định của
4 là 0 và giá trị mặc định của range[start, stop, step]
5 là 1. Đó là lý do tại sao range[start, stop, step]
3 tương đương với # numbers from 2 to 4 [5 is not included]
numbers = range[2, 5]
print[list[numbers]] # [2, 3, 4]
# numbers from -2 to 3 [4 is not included]
numbers = range[-2, 4]
print[list[numbers]] # [-2, -1, 0, 1, 2, 3]
# returns an empty sequence of numbers
numbers = range[4, 2]
print[list[numbers]] # []
4. The default value of # numbers from 2 to 4 [5 is not included]
numbers = range[2, 5]
print[list[numbers]] # [2, 3, 4]
# numbers from -2 to 3 [4 is not included]
numbers = range[-2, 4]
print[list[numbers]] # [-2, -1, 0, 1, 2, 3]
# returns an empty sequence of numbers
numbers = range[4, 2]
print[list[numbers]] # []
range[start, stop, step]
4 is 0,
and the default value of range[start, stop, step]
5 is 1. That's why # numbers from 2 to 4 [5 is not included]
numbers = range[2, 5]
print[list[numbers]] # [2, 3, 4]
# numbers from -2 to 3 [4 is not included]
numbers = range[-2, 4]
print[list[numbers]] # [-2, -1, 0, 1, 2, 3]
# returns an empty sequence of numbers
numbers = range[4, 2]
print[list[numbers]] # []
3 is equivalent to # numbers from 2 to 4 [5 is not included]
numbers = range[2, 5]
print[list[numbers]] # [2, 3, 4]
# numbers from -2 to 3 [4 is not included]
numbers = range[-2, 4]
print[list[numbers]] # [-2, -1, 0, 1, 2, 3]
# returns an empty sequence of numbers
numbers = range[4, 2]
print[list[numbers]] # []
4.phạm vi [] trong vòng lặp
Hàm
range[start, stop, step]
1 thường được sử dụng trong vòng lặp để lặp lại vòng lặp một số lần nhất định. Ví dụ,# iterate the loop 5 times
for i in range[5]:
print[i, 'Hello']
0 Hello 1 Hello 2 Hello 3 Hello 4 Hello