Python 使用两个列表创建不同的句子

Python 使用两个列表创建不同的句子,python,list,Python,List,所以我有两个清单。假设一个列表包含美国每个州的首都,另一个列表包含该州。显然,这两个列表的排序方式是,列表1中的第一个元素(大写)对应于列表2的第一个元素(states) 当只使用一个列表时,就好像我只需要在一个句子中更改一件事一样,我目前使用以下代码: list = map(str.strip, list(open('list.txt', 'r'))) questions = ['What is the capital of the state %s' %(element) for eleme

所以我有两个清单。假设一个列表包含美国每个州的首都,另一个列表包含该州。显然,这两个列表的排序方式是,列表1中的第一个元素(大写)对应于列表2的第一个元素(states)

当只使用一个列表时,就好像我只需要在一个句子中更改一件事一样,我目前使用以下代码:

list = map(str.strip, list(open('list.txt', 'r')))
questions = ['What is the capital of the state %s' %(element) for element in list]

with open('questions.txt', 'w') as fd:
    fd.write("\n".join(questions))
因此,在本例中,我只对美国各州使用了一个列表(list.txt),通过运行代码,它会弹出一个.txt文件(questions.txt),其中有许多行,表示:

What is the capital of the state California?
以及list.txt中包含的所有状态

现在,回到我的问题上来。如前所述,有时我需要在一个句子中使用两个列表(或我正在做的任何事情),例如:

等等

但我不确定如何修改我的上述代码,使其包含两个列表而不是一个列表

提前谢谢

编辑: 清单1示例:

Sacramento
Austin
Phoenix
清单2示例:

California
Texas
Arizona

您可以使用
zip
迭代一对列表:

capitals = tuple(map(str.rstrip, open('capitals.txt')))
states = tuple(map(str.rstrip, open('states.txt')))
answers = ['The capital of {} is {}'.format(state, capital) 
           for state, capital in zip(states, capitals)]
我对您的代码做了一些简化,并切换到了更新的、推荐的字符串格式化方法。我还使用
tuple
包装了
map
,因为在python3中
map
返回一个iterable而不是列表

questions = ['What is the capital of the state %s' %(list[x]) for x in range(50)]

试试这个。

你能给出一个列表的例子以及你想要实现的目标吗?请不要使用
list
作为变量名。用例子更新。很抱歉,我再也不会这样做了:)这也适用于Python 2.7吗?我被告知从那开始,所以这就是我目前所处的位置:)是的,在Python 2.7中,用
tuple
包装
map
也会起作用,尽管速度会慢一些,因为
tuple
必须将
map
创建的列表转换为一个tuple。您不需要那个tuple包装,
zip
处理任何可编辑的内容。@PM2Ring:这是公平的,但OP可能希望以后重用
大写字母和
状态。我经常将这种包装作为一种防御性编码。
questions = ['What is the capital of the state %s' %(list[x]) for x in range(50)]