Python 跳过列表,直接进入列表
我从文本文件中读取行,然后将它们以2个字符对插入列表中Python 跳过列表,直接进入列表,python,list,Python,List,我从文本文件中读取行,然后将它们以2个字符对插入列表中 例如hello=['he','el','ll','lo']。 在我当前的代码中,对行的初始读取会将每一行转换为它自己的列表,然后将其放入一个列表,给我一个列表列表。因此,这两条线 你好 world 给我列表[[['he'、'el'、'll'、'lo']、['wo'、'or'、'rl'、'ld']]。我可以用这段代码和singleList=sum(listlist,[])这将给我一个列表,但是这是低效的,因为它在列表上迭代了两次(我读到一则说
例如
hello=['he','el','ll','lo']
。
在我当前的代码中,对行的初始读取会将每一行转换为它自己的列表,然后将其放入一个列表,给我一个列表列表。因此,这两条线你好
world
给我列表
[[['he'、'el'、'll'、'lo']、['wo'、'or'、'rl'、'ld']]
。我可以用这段代码和singleList=sum(listlist,[])
这将给我一个列表,但是这是低效的,因为它在列表上迭代了两次(我读到一则说明,说这是一种不好的方法)
如何获取代码,并在第一次传递时将行中的值输入到单个列表中
def countPairs():
print ()
inFile = open("hello.txt", "r")
n = 2
linsiz = []
for line in inFile:
line.rstrip('\n')
linsiz.append([line[i:i+2] for i in range(0,len(line),1)])
print (linsiz)
singleList = sum(linsiz,[])
print (singleList)
countPairs()
无论是谁提出了可能的复制品,他都在试图关闭线程。这根本没有回答我的问题。我确信他们甚至没有读我的帖子,而是认出了一些有
hello=['he'、'el'、'll'、'lo']
的东西,并想“低点海报,让我们关闭它吧”.Idiotic.您使用的是列表理解,它返回一个列表,您的追加行将一个新列表追加到列表中。您将一个新值推到列表中,但该值是一个列表,因此它将生成一个列表列表
似乎您想要做的是将列表附加到您的列表中,例如:
# linsiz is an array.
linsiz += [line[i:i+2] for i in range(0,len(line),1)]
这与执行以下操作相同:[]+[]或将两个列表连接在一起。如果使用列表理解(返回列表),则追加行将向列表中追加一个新列表。如果将一个新值推入列表中,但该值是一个列表,因此它将生成一个列表列表 似乎您想要做的是将列表附加到您的列表中,例如:
# linsiz is an array.
linsiz += [line[i:i+2] for i in range(0,len(line),1)]
这与执行以下操作相同:[]+[],或将两个列表连接在一起。此小更改将完成以下操作:
for line in inFile:
line.rstrip('\n')
for i in range(0,len(line),1):
linsiz.append(line[i:i+2])
这小小的改变就可以做到:
for line in inFile:
line.rstrip('\n')
for i in range(0,len(line),1):
linsiz.append(line[i:i+2])
不要使用在列表中插入新元素的
linsiz.append()
。要将新列表连接到现有列表,请执行以下操作:
linsiz += [line[i:i+2] for i in range(len(line))]
或
不要使用在列表中插入新元素的
linsiz.append()
。要将新列表连接到现有列表,请执行以下操作:
linsiz += [line[i:i+2] for i in range(len(line))]
或
您只需使用
extend
:
def countPairs():
print()
with open("hello.txt") as lines:
linsiz = []
for line in lines:
line = line.rstrip('\n')
linsiz.extend(line[i:i+2] for i in range(len(line)))
print(linsiz)
您只需使用
extend
:
def countPairs():
print()
with open("hello.txt") as lines:
linsiz = []
for line in lines:
line = line.rstrip('\n')
linsiz.extend(line[i:i+2] for i in range(len(line)))
print(linsiz)
有一个标准库,完全用于通用的迭代方法,称为 您的应用程序听起来最像它需要的
itertools.chain.from\u iterable()
:
有一个标准库,完全用于通用的迭代方法,称为 您的应用程序听起来最像它需要的
itertools.chain.from\u iterable()
:
您应该
扩展该列表,也可以只使用生成器表达式,无需使用任何中间列表,只需使用:
linsiz.extend(line[i:i+2] for i in range(0,len(line),1))
您应该扩展该列表,也可以只使用生成器表达式,无需使用任何中间列表,只需使用:
linsiz.extend(line[i:i+2] for i in range(0,len(line),1))
这里有一种方法,使用iterable:
def readPairs(file):
for line in file:
for i in range(0, len(line) -1):
yield line[i:i+2]
def countPairs():
inFile = open("hello.txt", "r")
singleList = [pair for pair in readPairs(inFile)];
print(singleList)
countPairs()
这里有一种方法,使用iterable:
def readPairs(file):
for line in file:
for i in range(0, len(line) -1):
yield line[i:i+2]
def countPairs():
inFile = open("hello.txt", "r")
singleList = [pair for pair in readPairs(inFile)];
print(singleList)
countPairs()
如果您想要调试和查看某些内容,请使用一个小函数为每个单词提供块:
def splitWord(word):
"""yields your 2-character tuplles from your word"""
last = word[0]
for n in word[1:]: # skips first, thats already in last at start
yield last+n
last = n
def countPairs():
print ()
inFile = open("hello.txt", "r")
n = 2
linsiz = []
for line in inFile:
line.rstrip('\n')
linsiz.extend(splitWord(line)) # adds all elements of iterable as elements to list
print (linsiz)
countPairs()
如果您想要调试和查看某些内容,请使用一个小函数为每个单词提供块:
def splitWord(word):
"""yields your 2-character tuplles from your word"""
last = word[0]
for n in word[1:]: # skips first, thats already in last at start
yield last+n
last = n
def countPairs():
print ()
inFile = open("hello.txt", "r")
n = 2
linsiz = []
for line in inFile:
line.rstrip('\n')
linsiz.extend(splitWord(line)) # adds all elements of iterable as elements to list
print (linsiz)
countPairs()
只是把列表放在函数之外
final_list=[]
def countPairs():
inFile = open("filea.txt", "r")
for line in inFile:
for j in range(0,len(line.strip()),1):
data=line[j:j+2].strip()
if len(data)==1:
pass
else:
final_list.append(data)
countPairs()
print(final_list)
输出:
['he', 'el', 'll', 'lo', 'wo', 'or', 'rl', 'ld']
只是把列表放在函数之外
final_list=[]
def countPairs():
inFile = open("filea.txt", "r")
for line in inFile:
for j in range(0,len(line.strip()),1):
data=line[j:j+2].strip()
if len(data)==1:
pass
else:
final_list.append(data)
countPairs()
print(final_list)
输出:
['he', 'el', 'll', 'lo', 'wo', 'or', 'rl', 'ld']
看一看python的@Aaron哦,那东西有病。我要找的肯定是。我原以为只使用基本python,正试图找到一个解决方案。看一看python的@Aaron哦,那东西有病。我要找的肯定是。我原以为只使用基本python,正试图找到解决方案这样的解决方案。可能重复虽然我在堆栈上看到了很多关于一般表达式的内容,但我还不能完全理解它们。在尝试使用它们之前,我需要进一步研究它们。否则,它只是简单的复制和粘贴,最终对我没有好处。不过,我会研究它,是不是av我猜是3.6版本的问题?为什么要使用列表理解呢?列表理解只是一个列表构造函数,它使用其中的生成器表达式。将生成器表达式视为一个元素一个接一个地迭代和生成的东西,你应该通过它迭代来使用它。当没有更多的站点时,生成器将耗尽ms进行计算。这不是同一件事吗?不,这不是同一件事,但您也可以使用链
“列表理解只是一个列表构造函数,它使用其中的生成器表达式”-不完全是。但它是相似的。虽然我在堆栈上看到了很多关于一般表达式的内容,但我还不能完全理解它们。在我尝试使用它们之前,我需要对它们进行更多的研究。否则,它只是简单的复制和粘贴,最终对我没有好处。不过,我会研究一下,3.6版是否可用我想?为什么要使用列表理解呢?列表理解只是一个列表构造函数,它使用其中的生成器表达式。将生成器表达式视为一个逐个迭代并生成元素的东西,您应该通过它进行迭代以使用它。当生成器没有更多要计算的项时,它将耗尽这不是和这个一样吗?不,不一样,但是你也可以使用chain
“列表理解只是一个列表构造器,它消耗其中的生成器表达式”-不是真的。但是它很相似。这很好,但我还是会去掉无用的东西(或修复它)并使用他们的目标名称singleList
。我不需要line=line.rstrip('\n')吗?否则它会