다른 목록의 조각에 목록을 추가하는 Python
Sep 30 2020
다음은 기본적인 문제입니다.
>>> listb = [ 1, 2, 3, 4, 5, 6, 7 ]
>>> slicea = slice(2,5)
>>> listb[slicea]
[3, 4, 5]
>>> lista = listb[slicea]
>>> lista
[3, 4, 5]
>>> listb[slicea] += lista
>>> listb
[1, 2, 3, 4, 5, 3, 4, 5, 6, 7]
listb 해야한다
[1, 2, 6, 8, 10, 6, 7]
그러나 그것에 추가되지 않은 3, 4, 5후 삽입되었습니다 3, 4, 5.
tl; dr
작동하지 않는 코드가 있습니다.
self.lib_tree.item(song)['values'][select_values] = adj_list
self.lib_tree.item(album)['values'][select_values] += adj_list
self.lib_tree.item(artist)['values'][select_values] += adj_list
전체 코드는 다음과 같습니다.
def toggle_select(self, song, album, artist):
# 'values' 0=Access, 1=Size, 2=Selected Size, 3=StatTime, 4=StatSize,
# 5=Count, 6=Seconds, 7=SelSize, 8=SelCount, 9=SelSeconds
# Set slice to StatSize, Count, Seconds
total_values = slice(4, 7) # start at index, stop before index
select_values = slice(7, 10) # start at index, stop before index
tags = self.lib_tree.item(song)['tags']
if "songsel" in tags:
# We will toggle off and subtract from selected parent totals
tags.remove("songsel")
self.lib_tree.item(song, tags=(tags))
# Get StatSize, Count and Seconds
adj_list = [element * -1 for element in \
self.lib_tree.item(song)['values'][total_values]]
else:
tags.append("songsel")
self.lib_tree.item(song, tags=(tags))
# Get StatSize, Count and Seconds
adj_list = self.lib_tree.item(song)['values'][total_values] # 1 past
self.lib_tree.item(song)['values'][select_values] = adj_list
self.lib_tree.item(album)['values'][select_values] += adj_list
self.lib_tree.item(artist)['values'][select_values] += adj_list
if self.debug_toggle < 10:
self.debug_toggle += 1
print('artist,album,song:',self.lib_tree.item(artist, 'text'), \
self.lib_tree.item(album, 'text'), \
self.lib_tree.item(song, 'text'))
print('adj_list:',adj_list)
adj_list디버그에 표시되는 올바른 값 이 있습니다.
목록 조각에 값 목록을 어떻게 추가합니까?
답변
1 ShadowRanger Sep 30 2020 at 08:01
원하는 동작은 Python 내장 유형의 기능이 아닙니다. +내장 시퀀스는 요소 별 추가가 아닌 연결을 의미합니다. 그러나 numpy배열은 원하는 것을 수행하므로 numpy. 간단한 예 :
>>> import numpy as np
>>> a = np.array([2,3,4], dtype=np.int64)
>>> b = np.array([5,6,7], dtype=np.int64)
>>> a += b
>>> a
array([ 7, 9, 11])
>>> print(a)
[ 7 9 11]
>>> print(a.tolist())
[7, 9, 11]
출력 ( 양식 repr및 str양식 모두 )은 Python과 약간 다르지만 필요한 경우 list일반 Python으로 다시 변환 할 수 있습니다 list.