我有以下清单
j=[4,5,6,7,1,3,7,5]
Run Code Online (Sandbox Code Playgroud)
返回[5,5,6,7,7]j大于或等于5的元素的最简单方法是什么?
如何将函数应用于变量输入列表?例如,filter函数返回true值,但不返回函数的实际输出.
from string import upper
mylis=['this is test', 'another test']
filter(upper, mylis)
['this is test', 'another test']
Run Code Online (Sandbox Code Playgroud)
预期的产出是:
['THIS IS TEST', 'ANOTHER TEST']
Run Code Online (Sandbox Code Playgroud)
我知道upper是内置的.这只是一个例子.
老实说,我在这里有点困惑,为什么我不能在相同的数据上迭代两次?
def _view(self,dbName):
db = self.dictDatabases[dbName]
data = db[3]
for row in data:
print("doing this one time")
for row in data:
print("doing this two times")
Run Code Online (Sandbox Code Playgroud)
这将打印出"一次这样做"几次(因为数据有几行),但它根本不会打印出"这样做两次"......
我第一次迭代数据工作正常,但第二次当我运行最后一个列表"for data in data"时,这没有返回...所以执行它一次工作但不是两次......?
仅供参考 - 数据是一个csv.reader对象(如果是这样的原因)......
什么是使用的优势列表理解在forPython中循环?
主要是为了让它更具人性化,还是有其他理由使用列表理解而不是循环?
请不要燃烧,要求作为社区维基,所以没有人在这里获得声誉.我知道python不是第一种具有列表理解能力的语言.我只是对这个名字的历史感兴趣.
我特别感兴趣的是为什么它被称为理解
我最近寻找一种方法来展平嵌套的python列表,如下所示:[[1,2,3],[4,5,6]],这个:[1,2,3,4,5,6] .
Stackoverflow一如既往地有用,我找到了一篇具有这种巧妙的列表理解的帖子:
l = [[1,2,3],[4,5,6]]
flattened_l = [item for sublist in l for item in sublist]
Run Code Online (Sandbox Code Playgroud)
我以为我理解列表理解是如何工作的,但显然我没有得到最微妙的想法.最让我困惑的是,除了上面的理解之外,这也会运行(尽管它没有给出相同的结果):
exactly_the_same_as_l = [item for item in sublist for sublist in l]
Run Code Online (Sandbox Code Playgroud)
有人能解释一下python如何解释这些东西吗?基于第二个扩展,我希望python将它解释回来,但显然并非总是如此.如果是,第一个理解应该抛出一个错误,因为'sublist'不存在.我的思绪完全扭曲,帮助!
例如,我有这个二维数组:
[
[
0.0,
0.24320757858085434,
0.14893361727523413,
0.29786723455046826,
0.18838778030301612,
0.12160378929042717
],
[
0.23717478210768014,
0.0,
0.16770789675478251,
0.20539938644228997,
0.25981195646349819,
0.1299059782317491
],
[
0.21681956134183847,
0.250361664212574,
0.0,
0.23178986094050727,
0.16390018248131957,
0.13712873102376066
],
[
0.2933749527592357,
0.20744741852633861,
0.15681550844086434,
0.0,
0.18554661183269694,
0.15681550844086434
],
[
0.20305810393286577,
0.28716752453162431,
0.12135042758887897,
0.20305810393286577,
0.0,
0.18536584001376513
],
[
0.17877693623386351,
0.19584032147389943,
0.13848001934394774,
0.23407395508684939,
0.25282876786143976,
0.0
]
]
Run Code Online (Sandbox Code Playgroud)
它给出了概率集。如何找到每一行的最佳概率?还有什么方法可以在不改变元素位置的情况下找到例如第二、第三最佳概率?
代码
#Variables
var1 = ['Warehouse Pencil 1.docx', 'Production Pen 20.docx']
list1 = []
for x in var1:
splitted = x.split()
a = [splitted[0] + ' ' + splitted[1]]
list1.append(a)
print(list1)
Run Code Online (Sandbox Code Playgroud)
输出
[['Warehouse Pencil']]
[['Warehouse Pencil'], ['Production Pen']]
Run Code Online (Sandbox Code Playgroud)
目标
我打算拆分列表,获取每个部分的第 1 个和第 2 个单词,然后将它们放入一个新列表中。
题
为什么我的输出给我一个奇怪的输出?我哪里错了?
期望输出
我想要的输出应该是这样的:
['Warehouse Pencil', 'Production Pen']
Run Code Online (Sandbox Code Playgroud)
抓取第 1 个和第 2 个单词并将它们放入 1 个列表中。
我有一个Markov转换表的输出,这是一个包含59个浮点数的59个列表的列表.我想反转每个非0浮点数,然后规范化输出,以便我再次列出一个概率列表,加起来为1.
我已经阅读了关于列表理解的教科书,这似乎是相关的,但我不能为我的生活理解如何实现它.
列表清单是 m
for i in range(59):
[1/item for item in m[i] if item > 0.]
i += 1
Run Code Online (Sandbox Code Playgroud)
这会运行,但不会改变m.我item在这段代码中使用错了吗?我应该使用其他参考吗?
Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。
假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y:
y = x + 1
# Or it could be in a function:
def calc_y(an_x):
return an_x + 1
Run Code Online (Sandbox Code Playgroud)
现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:
xs = [1, 3, 5]
for x in xs:
y = x + 1
Run Code Online (Sandbox Code Playgroud)
while或者,如果有其他逻辑来计算值序列,我可以使用循环x:
def next_collatz(value):
if value % 2 == 0:
return value // 2
else:
return 3 * value + 1
def collatz_from_19():
x = 19
while x != 1:
x …Run Code Online (Sandbox Code Playgroud) python ×10
list ×3
numpy ×2
arrays ×1
for-loop ×1
function ×1
iteration ×1
nested-lists ×1
python-2.7 ×1
python-3.x ×1
string ×1