在python中,有一种简短的写作方式for i in range(len(l)):吗?
我知道我可以使用for i,_ in enumerate(l):,但我想知道是否有另一种方式(没有_).
请不要说for v in l因为我需要索引(例如比较连续值l[i]==l[i+1]).
[
{
"wrong3": "Nope, also wrong",
"question": "Example Question 1",
"wrong1": "Incorrect answer",
"wrong2": "Another wrong one",
"answer": "Correct answer"
},
{
"wrong3": "0",
"question": "How many good Matrix movies are there?",
"wrong1": "2",
"wrong2": "3",
"answer": "1"
}
]
Run Code Online (Sandbox Code Playgroud)
目前我有一个文件加载一个充满两个列表的JSON文件(上图).每个项目都是由5个项目组成的字典.
我试图从两个列表中列出"问题"及其索引.现在我正在使用enumerate()这个,唯一的事情是它在"问题"中列出字符串的每个字符,而不是列出列表1中的"问题"和列表2中的问题.
这是代码:
import json
try:
f = open('question.txt', 'r')
questions = json.load(f)
f.close()
except FileNotFoundError:
print('NotFoundError \n')
questions = {}
except ValueError:
print('ValueError \n')
questions = {}
except NameError:
print('NameError \n')
questions = {}
for i, v …Run Code Online (Sandbox Code Playgroud) 我知道有效的基本方法enumerate,但是当你在for循环中有两个变量时它会有什么不同?我用count和i以下实施例中
这段代码:
Letters = ['a', 'b', 'c']
for count, i in enumerate(Letters):
print(count, i)
Run Code Online (Sandbox Code Playgroud)
还有这个:
Letters = ['a', 'b', 'c']
for i in enumerate(Letters):
print(i)
Run Code Online (Sandbox Code Playgroud)
两者都给出相同的输出,这个:
>>>
0 'a'
1 'b'
2 'c'
Run Code Online (Sandbox Code Playgroud)
是否在第一个例子的风格中编写代码在任何情况下都有益?有什么不同?如果你知道任何其他可能有用的方法,请告诉我,我正在尝试扩展我在python中的知识
我想知道如何在 python 中打印前 n 行字符串,这是我的代码:
for word, numbers in enumerate(sorted):
print(word,':',numbers)
Run Code Online (Sandbox Code Playgroud)
输出如下所示。如何只打印这些字符串的前 10 行?我尝试使用范围,但它只打印 True 或 False...
0 : ('the', 1577)
1 : ('and', 1080)
2 : ('of', 761)
3 : ('to', 734)
4 : ('a', 720)
5 : ('in', 550)
6 : ('it', 451)
7 : ('was', 432)
8 : ('his', 405)
9 : ('he', 381)
10 : ('I', 365)
11 : ('Scrooge', 361)
12 : ('that', 346)
13 : ('with', 312)
14 : ('you', 254)
15 : ('as', …Run Code Online (Sandbox Code Playgroud) 我有一个基本数据框,它是来自不干净数据的组的结果:
df:
Name1 Value1 Value2
A 10 30
B 40 50
Run Code Online (Sandbox Code Playgroud)
我创建了一个列表如下:
Segment_list = df['Name1'].unique()
Segment_list
array(['A', 'B'], dtype=object)
Run Code Online (Sandbox Code Playgroud)
现在我想遍历列表并找到每次迭代的 Value1 中的数量,所以我使用:
for Segment_list in enumerate(Segment_list):
print(df['Value1'])
Run Code Online (Sandbox Code Playgroud)
但是我得到了两个值而不是一个一个。我只需要一次迭代的一个值。这可能吗?
Expected output:
10
40
Run Code Online (Sandbox Code Playgroud) 我想在字典列表中添加一个 id 键,其中每个 id 代表枚举的嵌套字典。
当前字典列表:
current_list_d = [{'id': 0, 'name': 'Paco', 'age': 18} #all id's are 0
{'id': 0, 'name': 'John', 'age': 20}
{'id': 0, 'name': 'Claire', 'age': 22}]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
output_list_d = [{'id': 1, 'name': 'Paco', 'age': 18} #id's are counted/enumerated
{'id': 2, 'name': 'John', 'age': 20}
{'id': 3, 'name': 'Claire', 'age': 22}]
Run Code Online (Sandbox Code Playgroud)
我的代码:
for d in current_list_d:
d["id"]+=1
Run Code Online (Sandbox Code Playgroud) 我写了一个函数,它返回一个由第一个字符开头的新字符串.
因此,例如"Pizza"产生"Pza","Maogtbhdewr"产生"母亲".
此代码是range()和len():
def string_skip(string):
new_string = ""
for n in range(0, len(string)):
if n % 2 == 0:
new_string += string[n]
return new_string
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法用pylint而不是enumerate()和range()?(这是为了练习目的)
谢谢你的帮助.
Python 中的一切都是有原因的。搭载Python的所有系统都依赖于类似50的内置功能,其中大部分是非常有用的,独特的,如format(),len(),list(),或range()。我不明白为什么enumerate()存在。
它已在PEP 279 (2002) 中引入并保留至今。我真的不明白它为什么存在,因为它可以使用更多 2-3 个字符的其他更重要的内置函数来完成。来自Python 文档:
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
Run Code Online (Sandbox Code Playgroud)
for i in enumerate(seasons):
print(i)
Run Code Online (Sandbox Code Playgroud)
使用更重要的内置函数的实现是这样的:
for i in zip(range(len(seasons)), seasons):
print(i)
Run Code Online (Sandbox Code Playgroud)
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
Run Code Online (Sandbox Code Playgroud)
这两者是相同的,我们都知道它们的重要性zip()和重要性range()。那么为什么要添加一个内置函数,除了这两个函数之外,它似乎没有任何价值?
在Python Docs 中,这里相当于enumerate():
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1 …Run Code Online (Sandbox Code Playgroud) 让我们说mylist是70个元素的列表,我想从mylist中随机选择0,12,5个元素.我在"rand:"得到语法错误
rand = [0, 12, 5]
LL=[]
for x in enumerate(mylist) if i in rand:
LL.append(x)
Run Code Online (Sandbox Code Playgroud) 我有一个清单:
a = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
我想得到字典:
b = {'a':0, 'b':1, 'c':2}
Run Code Online (Sandbox Code Playgroud)
最Pythonic的方法是什么?