谱写吉他谱

问题描述 投票:0回答:1

我有两个列表。

list1=('a','b','c')
list2=('2','1','3')

和一个文本文件这个文本文件有三行,所以我想在其中添加 'a' 第二行 '-' 在其他人身上。'b' 第一行 '-' 在其他人身上,以及 'c' 第三行 '-' 在别人那里根据list1和list2这样做。

xxxx-b-
xxxxa--
xxxx--c
python list text audio-player guitar
1个回答
0
投票

第一个任务是让第一个列表正确排序。 这很容易,如果你 zip 将两个列表放在一起,然后根据(int转换的)行号进行排序。

>>> list1 = ['a', 'b', 'c']
>>> list2 = ['2', '1', '3']
>>> sorted(zip(list1, list2), key=lambda p: int(p[1]))
[('b', '1'), ('a', '2'), ('c', '3')]

然后你需要将字母格式化为适当的字符串。 我会用类似这样的方法来做。

'xxxx' + ''.join(char if char == letter else '-' for char in 'abc')

所以全部加在一起就是:

>>> for row in [
...     'xxxx' + ''.join(char if char == letter else '-' for char in 'abc')
...     for letter, _line in sorted(zip(list1, list2), key=lambda p: int(p[1]))
... ]:
...     print(row)
...
xxxx-b-
xxxxa--
xxxx--c

现在你只需要把它写到相应的文本文件中,而不是打印出来;因为你没有说明你想怎么做(是一个特定的文本文件? 是一个函数的参数?我就把这部分留给你来填了。)


0
投票

我是这样做的,但我认为有一个比我的方法更好的方法

list1=['1','4','3','2']
list2=['a','b','c','d'] 
j=0
 while j < len(list1):
    with open("note2.txt",'r+') as f:
        line = f.readlines()
        note=""
        f.seek(0)
        for index,line in enumerate(line):
            if index==list1[j]:
                note+=line.strip()+ str(list2[j])+'\n'
            else: 
                note+=line.strip()+ '-\n'

        f.write(note)

    f.close()
    j+=1
© www.soinside.com 2019 - 2024. All rights reserved.