Python меняет несколько элементов списка, хотя я прошу изменить только один - PullRequest
0 голосов
/ 03 марта 2019

У меня странная проблема, которую я не могу понять.Когда я спрашиваю от Python до .replace row[2], это также меняет значение row[1].Это происходит только в случаях, когда row[1] и row[2] имеют одинаковое значение до Я меняю row[2].

Я querying мой database вот так:

c_lime.execute("SELECT * FROM lime_database_table WHERE {} = ? ORDER BY time_start ASC".format(table_column), [user_query])
for row in c_lime.fetchall():

    #ROW IS (2.31568438882786e+38, '1/8/2015 8:00:00 AM', '1/8/2015 9:00:00 AM')

    passed_row = row[1]

    #HERE I SUCCESSFULLY REPLACE row AT POSITION row[1]
    replaced_row = str(row).replace(row[1], convert_time_zone(passed_row))

    #NOW row[1] is '1/8/2015 9:00:00 AM', the same as row[2]

    passed_row2 = row[2]

    #HERE I REPLACE row[2]
    replaced_row2 = str(replaced_row).replace(row[2], convert_time_zone(passed_row2))

    print(replaced_row2)

Теперь я ожидаю, что row[1] будет '1/8/2015 9:00:00 AM', как и раньше, и row[2] будет '1/8/2015 10:00:00 AM'но по какой-то странной причине оба '1/8/2015 10:00:00 AM'.Эта ошибка только возникает, когда row[1] на один час меньше row[2].В противном случае это работает безупречно, добавляя 1 час к row[1] и row[2].

Если это поможет, я выложу код для метода convert_time_zone:

def convert_time_zone(passed_row):
change_date = passed_row
print(str(change_date))
tz = time_zone

my_time_list = list(change_date)
counter = 0
for i in my_time_list:
    if i == ":":
        print("Found :  Counter is " + str(counter))
        print("\nBEFORE: " + str(''.join(my_time_list)) + "\n")

        if my_time_list[counter - 1] == "9":
            my_time_list[counter - 1] = str(tz - 1)

            if my_time_list[counter - 2] == " ":
                my_time_list[counter - 2] = " 1"
            elif my_time_list[counter - 2] != " ":
                my_time_list[counter - 2] = " " + str(int(my_time_list[counter - 2]) + tz)

            print("AFTER: " + str(''.join(my_time_list)) + "\n")
        elif my_time_list[counter - 1] == "2" and my_time_list[counter - 2] == "1" and tz > 0:
            my_time_list[counter - 1] = str(tz)
            my_time_list[counter - 2] = " "
            print("AFTER: " + str(''.join(my_time_list)) + "\n")
        else:
            my_time_list[counter - 1] = str(int(my_time_list[counter - 1]) + tz)
            print("AFTER: " + str(''.join(my_time_list)) + "\n")

        my_time_list = str(''.join(my_time_list))
        print(my_time_list)

        break
    counter += 1
return my_time_list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...