回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在创建一个从指定和弦生成行走低音线的应用程序。它总是从根(第一和弦)开始,然后是第一、第三和第五和弦的排列</p>
<p>我想在Python的列表中将字符串(根)附加到元组(排列)中,但我的代码不起作用。让我把我的代码:</p>
<pre><code># pip install pychord
from pychord import Chord
from itertools import permutations
def returnPermutations(arr, r):
return list(permutations(arr, r))
c7 = Chord("C7")
print("c7.components()", c7.components())
print("Get the Triad: c7.components()[0:3]: ", c7.components()[0:3])
chordTonePermutations = returnPermutations(c7.components()[0:3], 3)
print("chordTonePermutations: ", chordTonePermutations)
print("chordTonePermutations[0]: ", chordTonePermutations[0])
# walkingBass = tuple((c7.components()[0],)) + chordTonePermutations[0]
walkingBass = list(tuple((c7.components()[0],)) + chordTonePermutations[0])
walkingBassList = []
# walkingBassList = list.append(walkingBass)
for chordTones in chordTonePermutations:
print("chordTones", chordTones)
walkingBass = tuple((c7.components()[0],)) + chordTones
# walkingBass = list(tuple((c7.components()[0],)) + chordTones)
walkingBassList = list.append(walkingBass)
print("walkingBass", walkingBass)
print("walkingBassList", walkingBassList)
# What I expect is a list of tuples which always begins with the root 'C',
# plus the permutations of the triad (the first 3 chord tones):
# walkingBassList [
# ('C', 'C', 'E', 'G'),
# ('C', 'C', 'G', 'E'),
# ('C', 'E', 'C', 'G'),
# ('C', 'E', 'G', 'C'),
# ('C', 'G', 'C', 'E'),
# ('C', 'G', 'E', 'C')]
</code></pre>
<p>。。。此代码为我提供了以下带有错误的输出:</p>
<pre><code>c7.components() ['C', 'E', 'G', 'Bb']
Get the Triad: c7.components()[0:3]: ['C', 'E', 'G']
chordTonePermutations: [('C', 'E', 'G'), ('C', 'G', 'E'), ('E', 'C', 'G'), ('E', 'G', 'C'), ('G', 'C', 'E'), ('G', 'E', 'C')]
chordTonePermutations[0]: ('C', 'E', 'G')
chordTones ('C', 'E', 'G')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-84-3a01c9d6da74> in <module>()
24 walkingBass = tuple((c7.components()[0],)) + chordTones
25 # walkingBass = list(tuple((c7.components()[0],)) + chordTones)
---> 26 walkingBassList = list.append(walkingBass)
27
28 print("walkingBass", walkingBass)
TypeError: descriptor 'append' requires a 'list' object but received a 'tuple'
</code></pre>
<p>因此,我用一个列表包围了元组:</p>
<pre><code> # walkingBass = tuple((c7.components()[0],)) + chordTones
walkingBass = list(tuple((c7.components()[0],)) + chordTones)
</code></pre>
<p>现在它给了我<code>TypeError: append() takes exactly one argument (0 given)</code>:</p>
<pre><code>TypeError Traceback (most recent call last)
<ipython-input-86-e2ecc32a34c8> in <module>()
24 # walkingBass = tuple((c7.components()[0],)) + chordTones
25 walkingBass = list(tuple((c7.components()[0],)) + chordTones)
---> 26 walkingBassList = list.append(walkingBass)
27
28 print("walkingBass", walkingBass)
TypeError: append() takes exactly one argument (0 given)
</code></pre>
<p>。。。等待(给出0)?已经给出了一个参数<code>walkingBass</code>,对吗?我怎么了</p>
<p>下面的问题对我没有帮助,因为append实际上没有任何参数。
<a href="https://stackoverflow.com/questions/34563598/it-keeps-saying-typeerror-append-takes-exactly-one-argument-0-given">It keeps saying: TypeError: append() takes exactly one argument (0 given)</a></p>
<p>。。。我完全糊涂了。有人能帮我修一下吗?先谢谢你</p>