Using a loop in Python to name variables

后端 未结 5 1390
说谎
说谎 2020-12-03 03:45

How do I use a loop to name variables? For example, if I wanted to have a variable double_1 = 2, double_2 = 4 all the way to double

相关标签:
5条回答
  • 2020-12-03 04:03

    You can use the dict while it don't fit your requirement. But I hope it can help you.

    var_dic = {}
    for x in range(1, 13):
        var_dic["double_%s"% str(x)] = x * 2
    print var_dic
    
    0 讨论(0)
  • 2020-12-03 04:11

    Although I doubt you really need to do what you want, here's a way:

    namespace = globals()
    for x in range(1, 13):
        namespace['double_%d' % x] = x * 2
    
    print double_1
    print double_2
       ...
    print double_12
    

    globals() returns a dictionary representing the current global symbol table (the dictionary of the current module). As you can see, it's possible to add arbitrary entries to it.

    0 讨论(0)
  • 2020-12-03 04:15

    As already mentioned, you should use a dict. Here's a nice easy way to create one that meets your requirements.

    >>> {k:k*2 for k in range(1,13)}
    {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20, 11: 22, 12: 24}
    
    0 讨论(0)
  • 2020-12-03 04:27

    Use a dictionary instead. E.g:

    doubles = dict()
    
    for x in range(1, 13):
        doubles[x] = x * 2
    

    Or if you absolutely must do this AND ONLY IF YOU FULLY UNDERSTAND WHAT YOU ARE DOING, you can assign to locals() as to a dictionary:

    >>> for x in range(1, 13):
    ...     locals()['double_{0}'.format(x)] = x * 2
    ... 
    >>> double_3
    6
    

    There never, ever should be a reason to do this, though - since you should be using the dictionary instead!

    0 讨论(0)
  • 2020-12-03 04:27

    expanding my comment: "use a dict. it is exactly why they were created"

    using defaultdict:

    >>> from collections import defaultdict
    >>> d = defaultdict(int)
    

    using normal dict:

    >>> d = {}
    

    the rest:

    >>> for x in range(1, 13):
        d['double_%02d' % x] = x * 2
    
    
    >>> for key, value in sorted(d.items()):
        print key, value
    
    
    double_01 2
    double_02 4
    double_03 6
    double_04 8
    double_05 10
    double_06 12
    double_07 14
    double_08 16
    double_09 18
    double_10 20
    double_11 22
    double_12 24
    
    0 讨论(0)
提交回复
热议问题