Hướng dẫn can variable name change in loop python? - tên biến có thể thay đổi trong python vòng lặp không?

Tôi chỉ tự hỏi nếu có ai biết cách thay đổi tên biến dựa trên vòng lặp cho một cái gì đó như thế này:

for i in range(3)
     group+i=self.getGroup(selected, header+i)

sao cho tên của các biến thay đổi để chứa dữ liệu. Cảm ơn!

~Sam

Hướng dẫn can variable name change in loop python? - tên biến có thể thay đổi trong python vòng lặp không?

S.Lott

377K79 Huy hiệu vàng503 Huy hiệu bạc773 Huy hiệu Đồng79 gold badges503 silver badges773 bronze badges

Đã hỏi ngày 29 tháng 6 năm 2009 lúc 19:38Jun 29, 2009 at 19:38

1

Bạn có thể muốn một dict thay vì các biến riêng biệt. Ví dụ

d = {}
for i in range(3):
    d["group" + str(i)] = self.getGroup(selected, header+i)

Nếu bạn nhấn mạnh vào việc sửa đổi các biến cục bộ, bạn có thể sử dụng hàm

d = {}
for i in range(3):
    d["group" + str(i)] = self.getGroup(selected, header+i)
2:

for i in range(3):
    locals()["group"+str(i)] = self.getGroup(selected, header+i)

Mặt khác, nếu những gì bạn thực sự muốn là sửa đổi các biến thể hiện của lớp bạn đang ở, thì bạn có thể sử dụng hàm

d = {}
for i in range(3):
    d["group" + str(i)] = self.getGroup(selected, header+i)
3

for i in group(3):
    setattr(self, "group"+str(i), self.getGroup(selected, header+i)

Và tất nhiên, tôi giả sử với tất cả các ví dụ mà bạn không chỉ muốn một danh sách:

groups = [self.getGroup(i,header+i) for i in range(3)]

Đã trả lời ngày 29 tháng 6 năm 2009 lúc 19:43Jun 29, 2009 at 19:43

Eli Courtwrighteli CourtwrightEli Courtwright

Phim thương hiệu vàng 180K6666 gold badges209 silver badges256 bronze badges

2

Sử dụng một danh sách.

groups = [0]*3
for i in xrange(3):
    groups[i] = self.getGroup(selected, header + i)

hoặc nhiều hơn "pythonical":

groups = [self.getGroup(selected, header + i) for i in xrange(3)]

Đối với những gì nó có giá trị, bạn có thể cố gắng tạo các biến theo cách "sai", tức là bằng cách sửa đổi từ điển giữ các giá trị của chúng:

l = locals()
for i in xrange(3):
    l['group' + str(i)] = self.getGroup(selected, header + i)

Nhưng đó thực sự là hình thức xấu, và thậm chí có thể không được đảm bảo để làm việc.

Đã trả lời ngày 29 tháng 6 năm 2009 lúc 19:45Jun 29, 2009 at 19:45

Hướng dẫn can variable name change in loop python? - tên biến có thể thay đổi trong python vòng lặp không?

David Zdavid zDavid Z

124K26 Huy hiệu vàng249 Huy hiệu bạc275 Huy hiệu Đồng26 gold badges249 silver badges275 bronze badges

Chắc chắn nên sử dụng một dict bằng cách sử dụng khóa "nhóm" + str (i) như được mô tả trong giải pháp được chấp nhận nhưng tôi muốn chia sẻ một giải pháp bằng Exec. Đó là một cách để phân tích các chuỗi vào các lệnh và thực thi chúng một cách linh hoạt. Nó sẽ cho phép tạo các tên biến vô hướng này theo yêu cầu của bạn thay vì sử dụng một dict. Điều này có thể giúp liên quan đến những gì không nên làm, và chỉ vì bạn không thể có nghĩa là bạn nên làm. Đó là một giải pháp tốt chỉ khi sử dụng các biến vô hướng là một yêu cầu khó:

l = locals()
for i in xrange(3):
    exec("group" + str(i) + "= self.getGroup(selected, header + i)")

Một ví dụ khác trong đó điều này có thể hoạt động bằng ví dụ mô hình Django. Giải pháp thay thế EXEC được nhận xét và cách xử lý trường hợp như vậy tốt hơn bằng cách sử dụng thuộc tính Dict có ý nghĩa hơn:dict attribute makes more sense:

Class A(models.Model):

    ....

    def __getitem__(self, item):  # a.__getitem__('id')
        #exec("attrb = self." + item)
        #return attrb
        return self.__dict__[item]

Nó có thể có ý nghĩa hơn để mở rộng từ một từ điển ở nơi đầu tiên để có được các hàm SETATTR và GETATTR.

Một tình huống liên quan đến phân tích cú pháp, ví dụ như tạo và thực thi các lệnh Python một cách linh hoạt, Exec là những gì bạn muốn :) Thêm trên Exec ở đây.

Đã trả lời ngày 29 tháng 5 năm 2014 lúc 15:52May 29, 2014 at 15:52

Radtekradtekradtek

32.3k11 Huy hiệu vàng138 Huy hiệu bạc109 Huy hiệu đồng11 gold badges138 silver badges109 bronze badges

Có vẻ như bạn muốn sử dụng một danh sách thay thế:

d = {}
for i in range(3):
    d["group" + str(i)] = self.getGroup(selected, header+i)
0

Mark Roddy

26.2K19 Huy hiệu vàng66 Huy hiệu bạc71 Huy hiệu đồng19 gold badges66 silver badges71 bronze badges

Đã trả lời ngày 29 tháng 6 năm 2009 lúc 19:43Jun 29, 2009 at 19:43

Eli Courtwrighteli CourtwrightGreg Hewgill

Phim thương hiệu vàng 180K66178 gold badges1132 silver badges1267 bronze badges

2

Sử dụng một danh sách.

d = {}
for i in range(3):
    d["group" + str(i)] = self.getGroup(selected, header+i)
1

hoặc nhiều hơn "pythonical":

Đối với những gì nó có giá trị, bạn có thể cố gắng tạo các biến theo cách "sai", tức là bằng cách sửa đổi từ điển giữ các giá trị của chúng:Jun 29, 2009 at 19:44

Nhưng đó thực sự là hình thức xấu, và thậm chí có thể không được đảm bảo để làm việc.eduffy

Đã trả lời ngày 29 tháng 6 năm 2009 lúc 19:4512 gold badges93 silver badges91 bronze badges

1

Làm thế nào để bạn thay đổi tên biến trong vòng lặp trong Python?

Tôi bắt đầu với cái xấu. Sản xuất một tên biến mới tại mỗi lần lặp của một vòng lặp không phải là một ý tưởng tốt. Vì vậy, tôi sẽ cung cấp cho bạn một cách để sử dụng python `list` thay vào đó, để đạt được điều tương tự ...
Biến = 0 ..
MYLIST = [0, 1, 2, 3].
cho x trong Mylist:.
Biến = x ..

Làm thế nào để bạn thay đổi một tên biến trong một vòng lặp?

Chỉ cần tạo một từ điển, sử dụng các tên biến làm khóa và dự định. Sau đó, khi bạn tạo tất cả các "biến" mà bạn cần, chỉ cần cập nhật chúng lên "Từ điển" của người dân địa phương (bảng ký hiệu).make a dictionary, use the variable names as keys and the intended. Then when you created all of the "variables" that you need, just update them to the locals "dictionary"(symbol table).

Bạn có thể thay đổi một biến trong vòng lặp thời gian không?

Không giống như nếu các câu lệnh, điều kiện trong một vòng lặp trong một thời gian cuối cùng phải trở thành sai.Nếu điều này không xảy ra, vòng lặp trong khi sẽ tiếp tục diễn ra mãi mãi!Cách tốt nhất để làm cho điều kiện thay đổi từ True sang Sai là sử dụng một biến như một phần của biểu thức Boolean.Sau đó chúng ta có thể thay đổi biến bên trong vòng lặp trong khi.We can then change the variable inside the while loop.

Một biến trong Python có thể được thay đổi không?

Một số giá trị trong Python có thể được sửa đổi, và một số không thể.Điều này không bao giờ có nghĩa là chúng ta không thể thay đổi giá trị của một biến - nhưng nếu một biến chứa một giá trị của một loại bất biến, chúng ta chỉ có thể gán cho nó một giá trị mới.Chúng ta không thể thay đổi giá trị hiện có theo bất kỳ cách nào.. This does not ever mean that we can't change the value of a variable – but if a variable contains a value of an immutable type, we can only assign it a new value. We cannot alter the existing value in any way.