Hướng dẫn dynamically change variable name in loop python - thay đổi động tên biến trong python vòng lặp

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

S.Lott

378K79 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

David Zdavid zDavid Z

125K26 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.4K11 Huy hiệu vàng138 Huy hiệu bạc110 Huy hiệu đồng11 gold badges138 silver badges110 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.3K19 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 badges1133 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?

Sử dụng định dạng chuỗi để tạo các tên biến khác nhau trong khi trong vòng lặp. Sử dụng một vòng lặp và phạm vi [bắt đầu, dừng] để lặp lại trong phạm vi từ đầu đến dừng. Bên trong vòng lặp, hãy sử dụng cú pháp định dạng chuỗi Dictax ["Key % s" % số %] = giá trị để ánh xạ nhiều khóa khác nhau trong Dict cho cùng một giá trị giá trị.. Use a for-loop and range[start, stop] to iterate over a range from start to stop . Inside the for-loop, use the string formatting syntax dict["key%s" % number] = value to map many different keys in dict to the same value value .

Chúng ta có thể thay đổi tên biến trong vòng lặp không?

Bạn không thể thay đổi tên của một biến.Những gì bạn có thể muốn làm là tạo các giá trị mới với tên mới mỗi lần thông qua vòng lặp.. What you probably want to do is create new values with new names each time through the loop.

Làm thế nào để bạn thay thế các tên biến trong Python?

Chúng ta có thể truy cập các tên biến trong Python bằng hàm Globals [] và hàm locals [].Hàm Globals [], khi được thực thi, trả về một từ điển có chứa tất cả các tên biến là chữ viết và các giá trị tương ứng của chúng.using the globals[] function and the locals[] function. The globals[] function, when executed, returns a dictionary that contains all the variable names as string literals and their corresponding values.

Làm thế nào để bạn tạo ra một động lực thay đổi trong Python?

Nhưng, đây là một số cách phổ biến để có được các giá trị động trong Python:..
Sử dụng hàm input input [] hoặc raw_input tích hợp ..
Sử dụng hàm eval [] tích hợp ..
Sử dụng hàm exec [] tích hợp ..
Sử dụng hàm execfile [] tích hợp ..
Sử dụng hàm compile [] tích hợp ..
Sử dụng hàm __Import __ [] ..

Bài Viết Liên Quan

Chủ Đề