Hướng dẫn double value in array python - giá trị kép trong mảng python

n = [3, 5, 7]

def double(lst):
    for x in lst:
        x *= 2
        print x
    return lst

print double(n)

Tại sao điều này không trả lại

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
4?

Cũng cần có một giải pháp tốt hơn trông giống như

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
5 nhưng nó cũng không hoạt động.

Bất kỳ lời khuyên nào khác về các vòng lặp và danh sách sẽ được đánh giá cao.

Hướng dẫn double value in array python - giá trị kép trong mảng python

JWPFOX

5.03411 Huy hiệu vàng45 Huy hiệu bạc42 Huy hiệu đồng11 gold badges45 silver badges42 bronze badges

Đã hỏi ngày 15 tháng 7 năm 2013 lúc 17:04Jul 15, 2013 at 17:04

Tại sao điều này không trả lại

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
4?

Bởi vì

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
7, hoặc
def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
8 vì nó được gọi bên trong
def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
9, không bao giờ được sửa đổi.
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
0 tương đương với
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
1 cho các số
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
2 và chỉ liên kết lại tên
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
2 mà không thay đổi đối tượng mà nó tham khảo.

Để xem điều này, sửa đổi

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
9 như sau:

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))

Để thay đổi danh sách các số tại chỗ, bạn phải gán lại các yếu tố của nó:

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2

Nếu bạn không muốn sửa đổi nó tại chỗ, hãy sử dụng sự hiểu biết:

def double(lst):
    return [x * 2 for x in lst]

Đã trả lời ngày 15 tháng 7 năm 2013 lúc 17:06Jul 15, 2013 at 17:06

Fred Foofred FooFred Foo

348K74 Huy hiệu vàng726 Huy hiệu bạc825 Huy hiệu Đồng74 gold badges726 silver badges825 bronze badges

1

n = [3, 5, 7]

def double(lst):
    for x in lst:
        x *= 2
        print x # item value changed and printed
    return lst # original lst returned

print double(n)

Bạn chỉ sửa đổi giá trị mục bên trong danh sách và in số của nó nhưng trả về danh sách LST gốc.

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
5 là cú pháp sai, cách viết chính xác là
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
6. Một cách khác là sử dụng Lambda với bản đồ:

print(list(map(lambda x:x*2,[1,2,3])))

Lưu ý:

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
7 sẽ đưa ra câu trả lời sai, nó xuất ra trong
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
8 giống như làm
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
9

Đã trả lời ngày 31 tháng 3 lúc 14:39Mar 31 at 14:39

Hướng dẫn double value in array python - giá trị kép trong mảng python

Bạn có thể sử dụng danh sách hiểu cho điều này:

FUNCTION:

def double(lst):
    return [i*2 for i in lst]

DEMO:

n = [3, 5, 7]
print(double(n))

OUTPUT:

[6, 10, 14]

Trong Python nhân danh sách sẽ tạo ra điều này:

print([1, 2]*4)
# [1, 2, 1, 2, 1, 2, 1, 2]

Do đó, những gì bạn cần là nhân các mục của danh sách, đó là lý do tại sao bạn sử dụng vòng lặp ngay từ đầu, để lặp qua danh sách.

Đã trả lời ngày 15 tháng 7 năm 2013 lúc 17:06Jul 15, 2013 at 17:06

Hướng dẫn double value in array python - giá trị kép trong mảng python

Fred Foofred FooPeter Varo

348K74 Huy hiệu vàng726 Huy hiệu bạc825 Huy hiệu Đồng7 gold badges51 silver badges69 bronze badges

Bạn chỉ sửa đổi giá trị mục bên trong danh sách và in số của nó nhưng trả về danh sách LST gốc.

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
5 là cú pháp sai, cách viết chính xác là
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
6. Một cách khác là sử dụng Lambda với bản đồ:

Lưu ý:

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
7 sẽ đưa ra câu trả lời sai, nó xuất ra trong
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
8 giống như làm
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
9

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
0

Đã trả lời ngày 15 tháng 7 năm 2013 lúc 17:06Jul 15, 2013 at 17:06

jh314jh314jh314

Fred Foofred Foo15 gold badges61 silver badges81 bronze badges

3

348K74 Huy hiệu vàng726 Huy hiệu bạc825 Huy hiệu Đồng

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
1

Bạn chỉ sửa đổi giá trị mục bên trong danh sách và in số của nó nhưng trả về danh sách LST gốc.

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
5 là cú pháp sai, cách viết chính xác là
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
6. Một cách khác là sử dụng Lambda với bản đồ:Apr 11, 2017 at 12:26

lotrus28lotrus28lotrus28

Lưu ý:

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
7 sẽ đưa ra câu trả lời sai, nó xuất ra trong
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
8 giống như làm
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
92 gold badges9 silver badges18 bronze badges

def double(lst):
    for i, x in enumerate(lst):
        x *= 2
        print("x = %s" % x)
        print("lst[%d] = %s" % (i, lst[i]))
2

Đã trả lời ngày 31 tháng 3 lúc 14:39

Bạn có thể sử dụng danh sách hiểu cho điều này:

Trong Python nhân danh sách sẽ tạo ra điều này:

Đã trả lời ngày 31 tháng 3 lúc 14:39

Bạn có thể sử dụng danh sách hiểu cho điều này:

Trong Python nhân danh sách sẽ tạo ra điều này:Jan 28, 2021 at 19:03

Hướng dẫn double value in array python - giá trị kép trong mảng python

Do đó, những gì bạn cần là nhân các mục của danh sách, đó là lý do tại sao bạn sử dụng vòng lặp ngay từ đầu, để lặp qua danh sách.

Peter Varopeter Varo

11.3k7 Huy hiệu vàng51 Huy hiệu bạc69 Huy hiệu đồng

print(multiplied_list)

Vấn đề là bạn sửa đổi

def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
2; Tuy nhiên, việc sửa đổi
def double(lst):
    for i in xrange(len(lst)):
        lst[i] *= 2
2 không thay đổi các yếu tố của danh sách.

Nếu bạn muốn nhân mọi phần tử với hai phần tử, hãy sử dụng MAP:Feb 25, 2021 at 11:04

Hướng dẫn double value in array python - giá trị kép trong mảng python

1