我在python中有一个字符串列表,我从一个文件中读取:
lines = ['4 11', '8 4', '10 5', '15 8', '4 3']
如果我想为某些变量分配4和11。我做了一些事情:
a, b = lines[0][0], lines[0][2:]
现在我需要为某些变量分配10和5,如果我做的话:
c, d = lines[2][0], lines[2][2:]
它给出了:
1
5
所以我必须这样做:
f, g = lines[0][0:2], lines[0][3]
获取列表中特定元素的必需结果。
我必须为任何输入文件自动执行此过程。我究竟做错了什么?有什么帮助吗?
答案 0 :(得分:2)
您应该使用split()
。
for num_pair in lines:
a, b = lines.split() # Splits based on whitespace
# Do something with a and b
split()
将一个字符串分隔成一个较小的字符串列表,根据空格分割(或者,如果你传入一个字符作为参数,则拆分该字符)。
答案 1 :(得分:2)
In [13]: lines = ['4 11', '8 4', '10 5', '15 8', '4 3']
In [14]: [[int(i) for i in line.split()] for line in lines]
Out[14]: [[4, 11], [8, 4], [10, 5], [15, 8], [4, 3]]
现在,您可以迭代新列表并指定您想要的任何变量
修改强>:
如果您只想阅读每对数字,可以将列表推导转换为生成器(只需将外部[]
更改为()
)。这样,并非所有结果都存储在列表中,您可以一次访问一个:
([int(i) for i in line.split()] for line in lines)
答案 2 :(得分:0)
您可以使用地图:
lines = ['4 11', '8 4', '10 5', '15 8', '4 3']
a,b = map(int,lines[0].split())
print a,b
4 11
a, b, c, d = map(int,lines[0].split() + lines[2].split())
print a,b,c,d
4 11 10 5