I'm trying to debug some Python 2.7.3 code to loop through a list of items and convert each to a string:
req_appliances = ['9087000CD', 'Olympus', 185]
for i in range(0, len(req_appliances)):
    req_appliances[i] = str(req_appliances[i])
print req_appliances
The output is as follows:
['9087000CD', 'Olympus', '185']
In the example above, I've set the value of req_appliances explicitly to test the loop. In the actual code, req_appliances is an argument to a function. I do not know the type of the argument at runtime, but it appears to be a list of scalar values. I do know that when I invoke the function, I see the following error message:
File ".../database.py", line 8277, in get_report_appliance_list
    req_appliances[i] = str(req_appliances[i])
TypeError: 'str' object does not support item assignment
I'm trying to deduce for what values of argument req_appliances it would be possible for this error condition to arise. It seems to me that all of the values are scalar and each (even if immutable) should be a valid LHS expressions in an assignment. Is there something I'm missing here? Here is the code in context, in the function in which it is defined:
def get_report_appliance_list(self, req_appliances, filter_type=None):
    appliances = {}
    appliance_list = []
    if filter_type != None:
        if filter_type not in ('appliances', 'servers'):
            raise ValueError("appliance filter_type must be one of 'appliances' or 'servers'")
    active_con = self.get_con()
    if active_con is None:
        raise Exception('No database connections are available.')
    con = None
    in_expr_items = ''
    if req_appliances != None:
        # Create a string like '(%s, %s, ...)' to represent
        # the 'in' expression items in the SQL.
        print(req_appliances)
        for i in range(0, len(req_appliances)):
            req_appliances[i] = str(req_appliances[i])
            in_expr_items += '%s,'
        in_expr_items = '(' + in_expr_items[:-1] + ') '
 
     
     
    