Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在理解中拆分列表以执行处理_Python_List_Split - Fatal编程技术网

Python 在理解中拆分列表以执行处理

Python 在理解中拆分列表以执行处理,python,list,split,Python,List,Split,我想从一个文档中构建两个列表,该文档的格式可能有所不同,但大致应该是两列,并带有一些分隔符。每行为: "word1"\t"word2" 比如说。 我的列表应该是“单词列表1”、“单词列表2”。 我想马上建造它们。我知道我可以使用pandas,但出于某种原因(脚本应该能够在没有特定导入的情况下工作,仅在通用库上),我还需要使用常规文档打开 我的尝试是: list_of_word1=[] list_of_word2=[] ((list_of_word1.extend(line.split()[0]

我想从一个文档中构建两个列表,该文档的格式可能有所不同,但大致应该是两列,并带有一些分隔符。每行为:

"word1"\t"word2"
比如说。 我的列表应该是“单词列表1”、“单词列表2”。 我想马上建造它们。我知道我可以使用pandas,但出于某种原因(脚本应该能够在没有特定导入的情况下工作,仅在通用库上),我还需要使用常规文档打开

我的尝试是:

list_of_word1=[]
list_of_word2=[]
((list_of_word1.extend(line.split()[0]),list_of_word2.extend(line.split()[1])) for line in open(doc))
生成器没有任何用途,因为extend返回None,因此使用一个不会在那里重用的表单或一开始可能不必要的表单可能会被视为不好。 另外,我想知道如何避免重复使用split函数,每行“ok”2次,但是如果我在更多的列上使用相同的原则,它将变得非常无效

我试图避免重复使用拆分是这样做的:

((list_of_word1.extend(linesplit0),list_of_word2.extend(linesplit1)) for line in open(doc) for (linesplit0,linesplit1) in line.split("\t"))
但这确实不起作用,因为它找不到要解包的元组。我也试过打开starred的包,但没用

((list_of_word1.extend(linesplit0),list_of_word2.extend(linesplit1)) for linesplit0,linesplit1 in open(doc).readline().split("\n").split("\t"))
但这让人觉得有些不满意,太做作了。
你觉得怎么样?

事实上,起初我想使用zip,因此使用了生成器。但我把事情搞混了,最后加了
单词列表1=[] 单词列表2=[]

这些都是无用的。 应该做的是:

list_of_word1,list_of_word2=zip(*((line.split()) for line in open(doc)))

这很有魅力。基本问题仍然存在,虽然我可以做我想做的事情,但我仍然有一个问题,那就是如果我必须在一个理解中管理一个拆分的解包,我不知道该怎么做。如果你有什么想法…?

实际上,起初我想使用zip,因此是生成器。但我把事情搞混了,最后加了
单词列表1=[] 单词列表2=[]

这些都是无用的。 应该做的是:

list_of_word1,list_of_word2=zip(*((line.split()) for line in open(doc)))
这很有魅力。基本问题仍然存在,虽然我可以做我想做的事情,但我仍然有一个问题,那就是如果我必须在一个理解中管理一个拆分的解包,我不知道该怎么做。如果你有什么想法…?

也许是这个

lists = [[] for i in range(<number_of_lists>)]
[[z[0] + [z[1]] for z in zip(lists, line.split())] for line in open(doc)]
list=[]表示范围内的i()
[[z[0]+[z[1]]用于zip中的z(列表,line.split())]用于打开的行(doc)]
(可能需要一些调整)

可能是这个

lists = [[] for i in range(<number_of_lists>)]
[[z[0] + [z[1]] for z in zip(lists, line.split())] for line in open(doc)]
list=[]表示范围内的i()
[[z[0]+[z[1]]用于zip中的z(列表,line.split())]用于打开的行(doc)]

(可能需要一些调整)

无论使用的分隔符是多少(只要有一些空格!)

例如,如果'temp.txt'是:

word10 word20
word11    word21
word12       word22
word13  word23
word14    word24
我们得到:

list1
['word10', 'word11', 'word12', 'word13', 'word14']

list2
['word20', 'word21', 'word22', 'word23', 'word24']

无论使用的分隔符是什么(只要有一定数量的空格!)

例如,如果'temp.txt'是:

word10 word20
word11    word21
word12       word22
word13  word23
word14    word24
我们得到:

list1
['word10', 'word11', 'word12', 'word13', 'word14']

list2
['word20', 'word21', 'word22', 'word23', 'word24']
您可以与一起使用来实现这一点

示例输入文件
data.txt

123
苹果橙香蕉
123
a、b、c
代码:

另见:

您可以与一起使用来实现此目的

示例输入文件
data.txt

123
苹果橙香蕉
123
a、b、c
代码:

另见:


这很好,但是在dataclean上结束了两次循环,这是我想要避免的。无论如何,我也会这样做,但我尽量避免这种事情,在数据结构上循环在计算上是没有效率的。另外,我们不需要通过使用这样的表单来保持一致,它的可读性较差(对我来说)。尽管如此,数据准备工作还是非常好的,现在就检查一下,不确定它是否能变得更干净!太好了:)太好了!如果这解决了您的问题,您可以将其标记为正确:-)这很好,但是您在dataclean上结束了两次循环,这是我想要避免的。无论如何,我也会这样做,但我尽量避免这种事情,在数据结构上循环在计算上是没有效率的。另外,我们不需要通过使用这样的表单来保持一致,它的可读性较差(对我来说)。尽管如此,数据准备工作还是非常好的,现在就检查一下,不确定它是否能变得更干净!太好了:)太好了!如果这已经解决了你的问题,你可以标记为正确:-)我想这就像我自己的答案一样,当我在脑海中整理它的时候。但是,虽然我喜欢zip,但我想知道其他用例,比如必须构建拆分所选元素的元组列表,拆分解包的问题仍然存在。。。(类似于[(line.split()[0],line.split()[-1]),用于docread中的line),但我想找到一种方法来为初始元组的两个元素解压拆分,而不是使用split()两次…@AndoJurai抱歉,我不明白你的意思。你应该用一个特定的示例输入和期望的结果来更新你的问题。我认为这就像我在脑海中整理它时自己的答案。但是,虽然我喜欢zip,但我想知道其他用例,比如必须为拆分的选定元素和问题构建一个元组列表拆分解包仍然有m个…(对于docread中的行,类似于[(line.split()[0],line.split()[-1]),但是我想找到一种方法来为初始元组的两个元素解包拆分,而不是使用split()两次…@AndoJurai抱歉,我不明白你的意思。你应该用一个具体的示例输入和期望的结果更新你的问题。