擅长:python、mysql、java
<p>应该使用<code>extend</code>而不是<code>append</code>来构建原始列表:</p>
<pre><code>coauthors = []
coauthors.extend((("f","g"),("f","h"),("g","h"))) # combinations of f,g,h
coauthors.extend((("i","j"),("i","k"),("i","l"),("j","k"),("j","l"),("l","k"))) # combinations of i,j,k,l
coauthors.extend((("a","b"),)) # combinations of a,b
</code></pre>
<p>这样做的效果是使用传递的iterable元素扩展原始列表,而不是将传递的iterable作为原始列表的单个新元素追加</p>
<p>还请注意,我在上面的最后一行中添加了一个逗号(以解决您的边问题中的问题)。这是告诉Python您想传递给<code>extend</code>一个元组(外部元组只包含一个元组)。如果没有这个额外的逗号,外括号将被忽略,Python认为您只传递元组<code>('a', 'b')</code></p>
<p>这将给出长度为2的10个元组的列表,而不是使用<code>append</code>生成的嵌套结构。从这里,创建数据帧很容易:</p>
<pre><code>import pandas as pd
df = pd.DataFrame(coauthors, columns=['auth1', 'auth2'])
</code></pre>
<p>给予:</p>
<pre><code> auth1 auth2
0 f g
1 f h
2 g h
3 i j
4 i k
5 i l
6 j k
7 j l
8 l k
9 a b
</code></pre>