使用 python for 循环将硬代码更改为更灵活

     2023-02-23     82

关键词:

【中文标题】使用 python for 循环将硬代码更改为更灵活【英文标题】:Change hardcode to more flexible using python for loop 【发布时间】:2020-07-16 22:44:51 【问题描述】:

我正在编写有关绘图的代码。我用 hardcode 方式编写,所以我的代码不够灵活。

我知道可以使用 for 循环 来解决 hardcode 问题。但是我的Python能力不够强。

这是我的代码。

df1 = df[df.cluster==0]
df2 = df[df.cluster==1]
df3 = df[df.cluster==2]

plt.scatter(df1.Age,df1['Income($)'],color='green')
plt.scatter(df2.Age,df2['Income($)'],color='red')
plt.scatter(df3.Age,df3['Income($)'],color='black')

在这种情况下,有 3 个集群。如果cluster = 4,则需要多写。 df4 = ...

我可以写一个for循环吗,比如这样

n = number of cluster
for i in range(n):
    df(random) = df[df.cluster==i]
for j in range(n):
    plt.scatter(df(n).Age,df(n)['Income($)'],color='RANDOM')

我的问题是只写几行代码,而不是使用硬编码方式。

【问题讨论】:

【参考方案1】:

如果您正在寻找一个简单的解决方案,这可能就是它。 (我重用了你的代码示例)

n = num_of_clusters
my_colors = ['green', 'red', 'black', ...]
for i in range(n):
    df_i = df[df.cluster == i]
    plt.scatter(df_i.Age, df_i['Income($)'], color=my_colors[i])

【讨论】:

【参考方案2】:

一种可能性:

colors = ['green', 'red', 'black']

for i in range(3):
    df_temp = df[df.cluster==i]
    plt.scatter(df_temp.Age, df_temp['Income($)'], color=colors[i])

【讨论】:

【参考方案3】:

这是pandas中的经典“groupby”操作。

看看一些关于使用 groupby 的帖子。你可以...

使用groupby根据cluster的值进行分组 使用 for 循环遍历组并... 在组容器中绘制每个组。

这里是一个使用groupby的例子

In [57]: from matplotlib import pyplot as plt                                   

In [58]: import pandas as pd                                                    

In [59]: data = 'year':[1976, 1979, 1982, 1978, 1982], 'income':[200, 170, 100,
    ...:  50, 120], 'cluster': [1, 1, 1, 2, 2]                                 

In [60]: df = pd.DataFrame(data)                                                

In [61]: df                                                                     
Out[61]: 
   year  income  cluster
0  1976     200        1
1  1979     170        1
2  1982     100        1
3  1978      50        2
4  1982     120        2

In [62]: for label, df in df.groupby('cluster'): 
    ...:     plt.plot(df['year'], df['income'], label=label) 
    ...:                                                                        

In [63]: plt.legend()                                                           
Out[63]: <matplotlib.legend.Legend at 0x7fe792601e80>

In [64]: plt.show() 

产生:

【讨论】:

将带有延迟的异步 for 循环更改为同步 javascript

】将带有延迟的异步for循环更改为同步javascript【英文标题】:changeasynchronousforloopwithdelaytosynchronousjavascript【发布时间】:2019-03-0109:22:56【问题描述】:我在函数内部有一个异步代码,它有这样的延迟consttimeout=ms=>newPromise(res=>... 查看详情

如何让 Python 中的 for 循环更高效

...能排列。我希望将这些排列写在.txt文档中。如果我尝试使用9字长的句子的代码,一切正常。这需要一段时间,但会创建包含所有可能排列的文件。但是当我用一个10字长的句子尝试代码时,它需要很长 查看详情

将链接到 sqlplus 的多个操作更改为 bash 脚本中的 for 循环

】将链接到sqlplus的多个操作更改为bash脚本中的for循环【英文标题】:Changingmultipleactionschainedintosqlplustoforloopinabashscript【发布时间】:2019-11-1913:12:29【问题描述】:我有这个显然效率低下的脚本:#!/bin/shforiin$(seq110);doecho"CREATETABLE... 查看详情

在 Python 中将列表理解转换为 For 循环

】在Python中将列表理解转换为For循环【英文标题】:ConvertingListComprehensionstoForLoopsinPython【发布时间】:2015-12-0210:47:26【问题描述】:我了解列表推导的重要性,但不了解它们的内部工作原理,因此无法用更简单的术语(例如for... 查看详情

3种方案|抛弃for循环,让python代码更丝滑(代码片段)

...自己在代码里不写forloop?因为这样可以迫使你去学习使用比较高级、比较地道的语法或library。文中以python为例子,讲了不少大家其实在别人的代码里都见过、但自己很少用的语法。自从我开始探索Python中惊人的语言功能... 查看详情

使用 java 8 将一段时间更改为 IntStream

】使用java8将一段时间更改为IntStream【英文标题】:ChangingawhiletoIntStreamusingjava8【发布时间】:2021-08-0518:17:01【问题描述】:我正在使用Java8,我试图将下面的代码转换为之前有for和while循环的代码,但不幸的是我无法将while转换... 查看详情

如何使用 for 循环使这段代码更短

】如何使用for循环使这段代码更短【英文标题】:howcanimakethiscodeshorterusingforloop【发布时间】:2019-01-3007:29:48【问题描述】:我想知道有什么建议吗?很抱歉问你们简单的问题谢谢if(int(classes[0][0])==1):print(\'icis_0.8_water\')if(int(classe... 查看详情

在 for 循环中哪个更 Pythonic:压缩还是枚举?

...到可扩展性和可读性,其中哪一个被认为更具Python风格?使用enumerate:group=[\'A\',\'B\',\'C\']tag=[\'a\',\'b\',\'c\']foridx,xinenumerat 查看详情

使用for循环(Python)追加/连接多个excel数据集

】使用for循环(Python)追加/连接多个excel数据集【英文标题】:Append/Concatenatemultipeexceldatasetsusingforloop(Python)【发布时间】:2018-07-2708:40:48【问题描述】:我正在尝试更有效地合并来自模拟运行的数据。目前,数据在不同文件夹... 查看详情

从循环内更改循环变量的 Javascript

...i的值更改为某个值。我知道您可以在评估最终表达式后使用continue更改i的值,但是如果我想将i的值更改为更 查看详情

将 foreach 循环更改为 Parallel.ForEach 循环

...析所有邮件消息以查看哪些是加密的。我想做的一件事是使用多线程来减少扫描消息所需的时间。目前代码如下:foreach(Objectiteminf 查看详情

在 Python 的 for 循环中使用多个变量

】在Python的for循环中使用多个变量【英文标题】:UsingmultiplevariablesinaforloopinPython【发布时间】:2019-01-2618:22:21【问题描述】:我正在尝试更深入地了解for如何在Python中循环处理不同的数据类型。使用for循环迭代数组的最简单方... 查看详情

使用字典 get() 作为函数从地图创建 Python 列表与使用 for 循环创建字典 get() 列表

】使用字典get()作为函数从地图创建Python列表与使用for循环创建字典get()列表【英文标题】:CreatingaPythonlistfromamapusingdictionaryget()asafunctionvscreatingadictionaryget()listwithaforloop【发布时间】:2020-12-3013:26:18【问题描述】:令我惊讶的是... 查看详情

如何将 bash 脚本代码更改为 Python [关闭]

...述】:大家好,我如何将bash脚本代码更改为Python3。我想使用Python脚本。Final=Sys_"$series".txtF_final=Pri"$series".txtawk\'print$4\'$Final|grep 查看详情

python跳过for循环

】python跳过for循环【英文标题】:pythonskippingaforloop【发布时间】:2015-07-2823:58:33【问题描述】:我正在编写代码查找经纬度,并计算一个点的一定半径内的距离,并将两个文件分开。对于前5次迭代,程序运行良好,但之后,程... 查看详情

Javascript:数组、For循环和函数

...,这样做会将#mainImage的url源更改为imgUrl数组中的那个。使用forEach似乎是一个不错的选择,但在设置时遇 查看详情

如何将所有负数更改为正python? [复制]

...语言一样,具有内置的绝对值函数。只需在循环或理解中使用它。如果你用 查看详情

Python:循环参数

...forjinrange(1,limit)”,则循环执行并给出所需的输出。但是使用num而不是limit,我应该能够更精确地控制循环的迭代, 查看详情