Просто использовал превосходный ответ jiln сверху, но ему нужно было расширить, чтобы разделить несколько столбцов. Думаю, я бы поделился.
def splitDataFrameList(df,target_column,separator):
''' df = dataframe to split,
target_column = the column containing the values to split
separator = the symbol used to perform the split
returns: a dataframe with each entry for the target column separated, with each element moved into a new row.
The values in the other columns are duplicated across the newly divided rows.
'''
def splitListToRows(row, row_accumulator, target_columns, separator):
split_rows = []
for target_column in target_columns:
split_rows.append(row[target_column].split(separator))
# Seperate for multiple columns
for i in range(len(split_rows[0])):
new_row = row.to_dict()
for j in range(len(split_rows)):
new_row[target_columns[j]] = split_rows[j][i]
row_accumulator.append(new_row)
new_rows = []
df.apply(splitListToRows,axis=1,args = (new_rows,target_column,separator))
new_df = pd.DataFrame(new_rows)
return new_df
Сборщик мусора .Net может абсолютно обрабатывать циклические ссылки. Очень высокий уровень представления о том, как работает сборщик мусора, ...
Это позволяет собирать круговые ссылки очень хорошо. Пока ни один из них не может быть достигнут от объекта, который, как известно, является невообразимым, тогда круговая ссылка по существу не имеет значения.
Примечание: я понимаю, что я не упомянул много интересных деталей, чтобы этот ответ был простым и прямым
Нет, что круговая ссылка не повлияет на сборщик мусора, и она будет вполне способна собрать экземпляр B.
Сборщик мусора знает, что никто не может ссылаться на экземпляр B после того, как он и, следовательно, никто не может использовать экземпляр B для косвенной ссылки A.
Нет, это не будет проблемой, потому что GC может обрабатывать Circular References
MSDN Says
Если группа объектов содержит ссылки друг на друга, но нет из этих объектов прямо или косвенно ссылаются на стек или общие переменные, тогда сборка мусора автоматически восстанавливает память.
blockquote>
Несколько ответов уже объяснили, что круговые ссылки не являются проблемой.
Что касается слабых ссылок - причина их использования - кеширование.
Когда GC ходит по деревьям зависимостей объектов, он игнорирует слабые ссылки. Другими словами, если единственная ссылка на объект является слабым (ым), он будет собираться мусором, но если сбор ссылок между созданием ссылки и вашей попыткой использования невозможен, вы все равно можете получить доступ к объекту.